Laravel 保存的雄辩模型的抓取关系

Laravel 保存的雄辩模型的抓取关系,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,在我保存了一个有说服力的模型之后,我如何才能恢复与它的关系 例如: $model = new Foo; $model->save(); dd($model); //return an object of Foo 假设我已经设置了一个与Baz的关系,我应该像一个正常的有说服力的对象一样抓住这个关系 dd($model->with('baz')->get()); 但这将返回de数据库中的每个Foo记录,其中包含关系 我只想能够得到当前的Baz模型,它与保存的Foo模型相关 我可

在我保存了一个有说服力的模型之后,我如何才能恢复与它的关系

例如:

$model = new Foo;
$model->save();
dd($model); //return an object of Foo
假设我已经设置了一个与Baz的关系,我应该像一个正常的有说服力的对象一样抓住这个关系

dd($model->with('baz')->get());
但这将返回de数据库中的每个Foo记录,其中包含关系

我只想能够得到当前的Baz模型,它与保存的Foo模型相关

我可以做到:

$result = Foo::with('baz')->find($model->id);
dd($result);

但这会导致另一个查询,我想阻止它。

取决于如何在模型上声明关系。假设您的关系声明为一对多,如下所示:

class Foo extends Eloquent {
    public function bazes()
    {
        return $this->hasMany('Baz');
    }
}
$result = Foo::with(array('bazes' => function($query)
{
    $query->where('id', $id);

}))->get();
$model->baz
然后你可以试试这个:

$results = $model->bazes;

$results是与foo->id=x直接相关的Baze的可编辑集合

但是,如果您希望使用过滤器进行快速加载,则可以尝试以下操作:

class Foo extends Eloquent {
    public function bazes()
    {
        return $this->hasMany('Baz');
    }
}
$result = Foo::with(array('bazes' => function($query)
{
    $query->where('id', $id);

}))->get();
$model->baz

我希望这对您有用。

您应该使用
load()
对现有模型进行加载

试一试


只需按如下方式访问一次:

class Foo extends Eloquent {
    public function bazes()
    {
        return $this->hasMany('Baz');
    }
}
$result = Foo::with(array('bazes' => function($query)
{
    $query->where('id', $id);

}))->get();
$model->baz
将加载关系

或者,您可以加载关系:

$model->load('baz'); 

效果是一样的,尽管第一种方法允许您直接实际使用关系的结果。如果您只想在数组/JSON输出中使用关系,我建议您使用第二种方法,因为它更清楚您在做什么。

我知道我可以这样做,但这个操作会经常发生,我不想只通过获取关系来执行额外的查询。