Laravel雄辩地从两个表中获取数据

时间:2018-09-11 11:35:17

标签: laravel eloquent

Laravel雄辩 查询生成器问题

您好,当我尝试获取slug = $slug处的所有行时。

我将详细解释:

我有两个表,card和card_categories。

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行。

我不知道怎么了。

非常感谢。

1 个答案:

答案 0 :(得分:1)

我想我理解您的意思,根据您的解释,我可以想象您的卡型号如下。

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);

这将选择所有具有给定子弹类别ID的卡。