laravel - 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 行。
我不知道出了什么问题。
非常感谢。
解决方案
我想我明白你的意思,从你的解释我想你的卡片模型如下。
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 的卡片。
推荐阅读
- python - geopandas 无法识别多边形中的点
- unix - scp远程文件到hadoop而不将它复制到边缘节点
- python - 如何从单元测试 django 视图中模拟模型方法?
- powershell - 如何使用 PowerShell 将有关监视器的信息导出到 csv 文件?
- c++ - 如何更改另一个进程中的地址,其值也可以更改?
- r - 如何使用 dplyr 或 ggplot 绘制连续参数的中值?
- php - Yii2在dataProvider中添加自定义查询,无需多次重写查询
- python - 从行和列索引创建数据框
- r - 使用R中的if语句逐行比较csv
- ios - 具有 3D 效果的 iOS 雷达图