保存一个Eloquent模型后,我怎样才能找回它的关系?
例如:
$model = new Foo;
$model->save();
dd($model); //return an object of Foo
假设我已经设置了与Baz的关系,我应该像普通的Eloquent Object一样抓住这种关系。
dd($model->with('baz')->get());
但这会返回de数据库中每个Foo记录的关系。
我只是希望能够获得与保存的Foo模型相关的当前Baz模型。
我能做到:
$result = Foo::with('baz')->find($model->id);
dd($result);
但这导致另一个查询,我想阻止。
答案 0 :(得分:1)
只需像这样访问一次:
$model->baz
将加载关系。
或者你可以 lazy eager load 关系:
$model->load('baz');
效果是一样的,虽然第一种方法允许您直接实际使用关系的结果。如果您只想在数组/ JSON输出中建立关系,我建议您使用第二种方法,因为它更清楚您正在做什么。
答案 1 :(得分:0)
取决于您如何在模型上声明您的关系。假设您的关系被声明为One to Many,就像这样:
class Foo extends Eloquent {
public function bazes()
{
return $this->hasMany('Baz');
}
}
然后你可以试试这个:
$results = $model->bazes;
或
$results = Foo::find($id)->bazes
$ results是一个可迭代的bazes集合,直接与foo-> id = x
相关但是,如果你想加载过滤器,那么你可以尝试这样:
$result = Foo::with(array('bazes' => function($query)
{
$query->where('id', $id);
}))->get();
我希望这适合你。
答案 2 :(得分:0)
您应该使用load()
急切加载现有模型。
尝试
$model = new Foo;
$model->save();
$model->load('baz');