尝试从两个不同的表中检索 'name column' 中的名称
Trying to retrieve names from 'name column' from two different tables
我正在尝试从 categories
table 和 brands
table 中提取名称列。 brand_user
table 是 brands
和 users
之间的 bridge/pivot table,因此我可以根据用户 ID 提取品牌。
问题是我的输出只给出了结果中的 categories
名称列,而省略了 brands
名称。我试过左右连接,但问题仍然存在。似乎我不应该调用 brands
名称列 brand_name
和类别名称列 category_name
,但目前这是我能想到但更愿意的唯一解决方案尽可能不(如果不这样做有意义的话)。
所以我的问题是,我应该让每个 table 的名称列都是唯一的,还是可以使用 name
作为 table 的通用名称列? ?
return DB::table('brands')
->join('categories', 'categories.id', '=', 'brands.category_id')
->join('brand_user', 'brand_user.brand_id', '=', 'brands.id')
->select('brands.name', 'categories.name')
->where('user_id', Auth::user()->id)
->get();
看来我可以为它们添加一个别名,它可以解决列名不明确的问题。
return DB::table('brands')
->join('categories', 'categories.id', '=', 'brands.category_id')
->join('brand_user', 'brand_user.brand_id', '=', 'brands.id')
->select('brands.name as bName', 'categories.name as cName')
->where('user_id', Auth::user()->id)
->get();
如果您对 Eloquent 和 Laravel 方式感兴趣,并且您已经在品牌和用户之间建立了多对多关系,并且在品牌和类别之间建立了一对多关系,您可以以这种方式遍历品牌和类别。
$brands = Brand::whereHas('users', function($query) {
$query->where('users.id', auth()->id());
})
->with('category')
->get();
foreach($brands as $brand) {
echo $brand->name .' ' .$brand->category->name;
}
您可以在此处查找 Eloquent 关系的更多详细信息 https://laravel.com/docs/8.x/eloquent-relationships
我正在尝试从 categories
table 和 brands
table 中提取名称列。 brand_user
table 是 brands
和 users
之间的 bridge/pivot table,因此我可以根据用户 ID 提取品牌。
问题是我的输出只给出了结果中的 categories
名称列,而省略了 brands
名称。我试过左右连接,但问题仍然存在。似乎我不应该调用 brands
名称列 brand_name
和类别名称列 category_name
,但目前这是我能想到但更愿意的唯一解决方案尽可能不(如果不这样做有意义的话)。
所以我的问题是,我应该让每个 table 的名称列都是唯一的,还是可以使用 name
作为 table 的通用名称列? ?
return DB::table('brands')
->join('categories', 'categories.id', '=', 'brands.category_id')
->join('brand_user', 'brand_user.brand_id', '=', 'brands.id')
->select('brands.name', 'categories.name')
->where('user_id', Auth::user()->id)
->get();
看来我可以为它们添加一个别名,它可以解决列名不明确的问题。
return DB::table('brands')
->join('categories', 'categories.id', '=', 'brands.category_id')
->join('brand_user', 'brand_user.brand_id', '=', 'brands.id')
->select('brands.name as bName', 'categories.name as cName')
->where('user_id', Auth::user()->id)
->get();
如果您对 Eloquent 和 Laravel 方式感兴趣,并且您已经在品牌和用户之间建立了多对多关系,并且在品牌和类别之间建立了一对多关系,您可以以这种方式遍历品牌和类别。
$brands = Brand::whereHas('users', function($query) {
$query->where('users.id', auth()->id());
})
->with('category')
->get();
foreach($brands as $brand) {
echo $brand->name .' ' .$brand->category->name;
}
您可以在此处查找 Eloquent 关系的更多详细信息 https://laravel.com/docs/8.x/eloquent-relationships