自动急切加载?

时间:2015-07-16 21:43:04

标签: laravel laravel-4 laravel-5

而不是做这样的事情(我在网站上做过几十次):

$posts = Post::with('user')
    ->with('image')
    ->get();

每当调用with('image')时,是否可以自动调用with('user')?所以最后,我可以做到:

$posts = Post::with('user')
    ->get();

仍然急切加载image

2 个答案:

答案 0 :(得分:3)

在模型中添加以下内容:

protected $with = array('image');

这应该可以解决问题。

$ with 属性列出了每个查询都应该热切加载的关系。

答案 1 :(得分:1)

这里的另一个解决方案就像一个魅力!

class Post extends Model {

    protected $table = 'posts';
    protected $fillable = [ ... ];

    protected $hidden = array('created_at','updated_at');

    public function user()
    {
        return $this->belongsTo('App\Models\User');
    }

    public function userImage()
    {
        return $this->belongsTo('App\Models\User')->with('image');
    }

}

$posts = Post::with('userImage')->get();

使用此功能,只要您不想拨打其他电话来检索图片,您仍可以使用自己的用户信息$posts = Post::with('user')->get();