首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel是否具有附加子句的急切加载关系?

Laravel是否具有附加子句的急切加载关系?
EN

Stack Overflow用户
提问于 2019-11-13 11:55:50
回答 2查看 66关注 0票数 0

我有两个相关的表:UsersImages

代码语言:javascript
运行
复制
class User extends Model
{
    public function images()
    {
        return $this->hasMany('App\Images');
    }
}

class Image extends Model{

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

我正尝试在名为thumbnailsUser模型上添加第二个方法,该方法允许我立即加载一组特定的用户Images,而不必首先加载所有用户图像。逻辑如下:

代码语言:javascript
运行
复制
public function thumbnails () {
    return $this->hasMany('App\Images')
        ->selectRaw('src, user_id')
        ->where('processed', true)
        ->limit(3);
}

下面是我对此关系的调用方式:

代码语言:javascript
运行
复制
$posts = Post::with(['user','user.thumbnails'])->get();

使用debugbar,我检查了这个查询:

代码语言:javascript
运行
复制
"sql": "select src, user_id from \"images\" where \"processed\" = 1 and \"images\".\"user_id\" in (12, 14, 15) limit 3", 

这只返回user.thumbnails first Post模型。我的thumbnails方法有问题吗?

EN

Stack Overflow用户

发布于 2019-11-13 12:04:48

您可以在内部查询中调用scope。

代码语言:javascript
运行
复制
class User extends Model{

    public function scopeThumbnails($query)
    {
        return $query->where('processed', true)
        ->limit(3);
    }
}

在你的控制器中

代码语言:javascript
运行
复制
$posts = Post::with(['user' => function($query) {
    $query->thumbnails();
}])->get();
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58830115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档