将hasOne关系设置为子模型的新实例

时间:2017-04-14 17:19:36

标签: laravel laravel-4

使用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();

1 个答案:

答案 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');
  }
}