已保存 Eloquent 模型的抓取关系
Grab relation of saved Eloquent model
保存 Eloquent 模型后,如何检索与它的关系?
例如:
$model = new Foo;
$model->save();
dd($model); //return an object of Foo
假设我已经设置了与 Baz 的关系,我应该像普通的 Eloquent 对象一样获取关系。
dd($model->with('baz')->get());
但是这将返回数据库中具有关系的每条 Foo 记录。
我只想获取与保存的 Foo 模型相关的当前 Baz 模型。
我能做到:
$result = Foo::with('baz')->find($model->id);
dd($result);
但这会导致另一个查询,我想阻止它。
取决于您如何在模型上声明关系。假设您的关系声明为一对多,如下所示:
class Foo extends Eloquent {
public function bazes()
{
return $this->hasMany('Baz');
}
}
那你可以试试这个:
$results = $model->bazes;
或
$results = Foo::find($id)->bazes
$results 是与 foo->id = x
直接相关的 bazes 的可迭代集合
但是如果你想预加载过滤器,那么你可以这样尝试:
$result = Foo::with(array('bazes' => function($query)
{
$query->where('id', $id);
}))->get();
希望这对你有用。
您应该使用 load()
.
预先加载现有模型
尝试
$model = new Foo;
$model->save();
$model->load('baz');
只需像这样访问一次即可:
$model->baz
关系将被加载。
或者你可以lazy eager load 关系:
$model->load('baz');
效果是一样的,尽管第一种方法允许您实际直接使用关系的结果。如果你只想在数组 / JSON 输出中建立关系,我建议你使用第二种方法,因为它更清楚你在做什么。
保存 Eloquent 模型后,如何检索与它的关系?
例如:
$model = new Foo;
$model->save();
dd($model); //return an object of Foo
假设我已经设置了与 Baz 的关系,我应该像普通的 Eloquent 对象一样获取关系。
dd($model->with('baz')->get());
但是这将返回数据库中具有关系的每条 Foo 记录。
我只想获取与保存的 Foo 模型相关的当前 Baz 模型。
我能做到:
$result = Foo::with('baz')->find($model->id);
dd($result);
但这会导致另一个查询,我想阻止它。
取决于您如何在模型上声明关系。假设您的关系声明为一对多,如下所示:
class Foo extends Eloquent {
public function bazes()
{
return $this->hasMany('Baz');
}
}
那你可以试试这个:
$results = $model->bazes;
或
$results = Foo::find($id)->bazes
$results 是与 foo->id = x
直接相关的 bazes 的可迭代集合但是如果你想预加载过滤器,那么你可以这样尝试:
$result = Foo::with(array('bazes' => function($query)
{
$query->where('id', $id);
}))->get();
希望这对你有用。
您应该使用 load()
.
尝试
$model = new Foo;
$model->save();
$model->load('baz');
只需像这样访问一次即可:
$model->baz
关系将被加载。
或者你可以lazy eager load 关系:
$model->load('baz');
效果是一样的,尽管第一种方法允许您实际直接使用关系的结果。如果你只想在数组 / JSON 输出中建立关系,我建议你使用第二种方法,因为它更清楚你在做什么。