php 如何在Laravel Eloquent中为每个类别获取3个分支

ehxuflar  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(103)

我有一个places表,它有一个category_id作为外键,分支属于模型中的Place。
我想从每个地方得到每个category_id的3个分支
我尝试了下面的查询,但它仍然返回一个地方,假设id 2和3具有相同的category_id,它将返回两个甚至超过3个分支。
我如何修改它,使它只返回3个分支的每个地方,只有我指定的类别?
这里是我的查询:

$places = Place::select(
                'places.id as place_id',
                'places.name',
                'places.description',
                'places.tags as place_tags',
                'branches.id as branch_id',
                'branches.name as branch_name',
                'categories.id as category_id',
                'categories.name')
                ->leftJoin('branches', 'places.id', '=', 'branches.place_id')
                ->leftJoin('categories', 'categories.id', '=', 'places.category_id')
                ->whereIn('places.category_id', [1, 2, 3])
                
                ->get();
hlswsv35

hlswsv351#

你可以使用laravel关系来代替leftjoin。
在地点模型中定义:

function getBranchData() {  
    return $this->hasMany(Branch::class, 'place_id', 'id') -> limit(3);
}

相关问题