【问题标题】:laravel how to insert o a simple many to many relationshiplaravel如何插入一个简单的多对多关系
【发布时间】:2014-07-23 02:02:59
【问题描述】:

我有一个DetailsAttribute 模型。

我有一个Actions 模型。

它们之间的关系是简单的多对多。

这就是我创建一个新的details_attribute_action 表的原因。

模型代码为:

class DetailsAttribute extends  Eloquent{
 public function actions(){
        return $this->belongsToMany('Action', 'details_attribute_action', 'action_id', 'details_attribute_id');
    }
}

class Action extends Eloquent{
   public function detailsAttribute(){
        return $this->belongsToMany('DetailsAttribute', 'details_attribute_action', 'details_attribute_id', 'action_id');
    }
}

然后当用户想要添加一个新的detailsAttribute 时,他会提交一个包含许多操作的表单。

我这样做:

$detailsAttribute = DetailsAttribute::create($data);

我也有这个动作:

$actions = Input::get('action_id')

请注意 $actions 是一个数组,因为 action_id 是 html 中 4 个选择的名称

我的问题是如何将此$actions 添加到details_attribute_action 中?

【问题讨论】:

  • 这个 Laravel 让你疯狂,Anastasie Laurent。
  • @ivanfromer 对不起,你为什么要这么说?
  • 我的问题就是这样。把我逼疯了。对不起。
  • @ivanfromer 你欢迎 :)
  • @ivanfromer bty 下面的答案很有用,只是我仍然需要deczo 告诉我updated_atcreated_at 的问题

标签: php laravel laravel-4


【解决方案1】:

这将链接数据透视表中的模型:

$detailsAttribute->actions()->sync($actions);

这就是你需要的,对吧?


旁注:您的关系中的 fk 顺序再次错误,应该是这样的:

class DetailsAttribute extends  Eloquent{
 public function actions(){
        return $this->belongsToMany('Action', 'details_attribute_action', 'details_attribute_id', 'action_id');
    }
}

class Action extends Eloquent{
   public function detailsAttribute(){
        return $this->belongsToMany('DetailsAttribute', 'details_attribute_action', 'action_id', 'details_attribute_id');
    }
}

belongsToMany 总是这样:

belongsToMany('Model', 'table', 'this_model_fk', 'other_model_fk')

【讨论】:

  • 这可能需要大约 20 分钟,因为我还有其他问题。抱歉耽搁了。不过,无论如何,我会尽快更新你的消息 +1
  • 一切正常,只有一个问题,details_attributes_actions 中的created_atupdated_at 保持为零,我的意思是:0000-00-00 00:00:00.000000 你知道为什么吗?
  • sync 按预期设置两个时间戳。不知道这次是什么问题
  • 请问我该怎么办:)?
  • 检查查询运行,使用attach 看看是否正确设置了时间戳
猜你喜欢
  • 2020-04-28
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 2017-02-12
  • 1970-01-01
相关资源
最近更新 更多