使用Laravel 4.2,如何在不触及数据库的情况下将模型上的hasOne关系设置为新模型的实例?
我想做以下事情,但是Laravel将实例视为属性,而不是子关系。
class ParentClass extends \Eloquent {
public function child() {
return $this-hasOne('ChildClass', 'child_id', 'parent_id');
}
}
$parent = new ParentClass();
$parent->child = new ChildClass();
答案 0 :(得分:0)
为了解决我的问题,我创建了一个Trait类,我添加到我的模型中,允许我设置关系。这样做不会自动设置我的父/子关系值,所以在保存/推送之前我必须小心手动执行此操作。
trait ModelSetRelationTrait
{
public function setRelation($key, $model)
{
$this->relations[$key] = $model;
}
}
class ParentClass extends \Eloquent {
use ModelSetRelationTrait;
public function child() {
return $this-hasOne('ChildClass', 'child_id', 'parent_id');
}
}