首页 > 解决方案 > Laravel eloquent 从两个表中获取数据

问题描述

Laravel Eloquent 查询构建器问题

您好,当我尝试获取slug = $slug.

我将更详细地解释:

我有两张桌子,卡片和卡片类别。

cards has category_id.
card_categories has slug.

我需要的是一个查询,它返回所有包含蛞蝓的卡片。

例如我做了这个:

$cards = Card::leftJoin('card_categories', 'cards.id', '=', 'card_categories.id')
        ->select('cards.*', 'card_categories.*')
        ->where('card_categories.slug', $slug)
        ->paginate(5);

但发生的情况是每个类别只返回 1 行。

我不知道出了什么问题。

非常感谢。

标签: laraveleloquent

解决方案


我想我明白你的意思,从你的解释我想你的卡片模型如下。

class Card extends Model {
    protected $table = 'cards';

    public function category()
    {
        return $this->belongsTo(Category::class)
    }
}

在这种情况下,您应该能够做到这一点:

$cards = Card::whereHas('category', function ($query) use ($slug) {
    $query->where('slug', $slug);
})->paginate(5);

这将选择所有具有给定 slug 的类别 id 的卡片。


推荐阅读