访问者模型:
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()
我做错什么了吗?
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'));