访客模特:
public function group()
{
return $this->belongsTo('MyApp\Models\VisitorGroup', 'group_id');
}
VisitorGroup模型:
public function visitors()
{
return $this->hasMany('MyApp\Models\Visitor');
}
那么我正在尝试为一个小组创建一些访问者:
$mygroup = VisitorGroup::whereRaw('name LIKE "%mygroup%"')->first();
foreach(range(1, 10) as $i)
{
$v = Visitor::create(array('name' => 'Homer simpson'));
$v->group()->save($mygroup); // HERE trying to add this visitor to the group
}
但是我收到了这个错误:
[BadMethodCallException]
Call to undefined method Illuminate\Database\Query\Builder::save()
我做错了吗?
答案 0 :(得分:1)
这是因为BelongsTo
没有save()
方法。但是它有associate()
方法,这可能是您正在寻找的方法。并不是说您之后必须明确保存模型:
$v = Visitor::create(array('name' => 'Homer simpson'));
$v->group()->associate($mygroup);
$v->save();
或者您可以在创建保存数据库查询时手动设置外键:
$v = Visitor::create(array('name' => 'Homer simpson', 'group_id' => $mygroup->id));
或者可能是最优雅的方式:
$mygroup->visitors()->create(array('name' => 'Homer simpson'));