多级数据库表和雄辩系统的一个非常随意的问题。
MainCategory有多个类别(
categories
表)类别包含多个产品(
products
表)
现在 routes.php 有:
Route::get('/categories/{slug}', ['as' => 'categories.list', 'uses' => 'ListController@getCategories'])->where('slug', '[\w\d\-\_]+');
ListController@getCategories
方法希望列出所有 products
以及 categories
main_categories
。
class ListController extends Controller
{
public function getCategories($slug) {
$categories = Category::orderBy('id', 'asc')
->select('categories.id as cat_id', 'categories.name as cat_name','categories.slug as cat_slug','products.*')
->join('main_categories', 'main_categories.id', '=', 'categories.main_category_id')
->join('products', 'products.category_id', '=', 'categories.id')
->where('main_categories.slug', '=', $slug)
->get();
if(count($categories) > 0) {
return view('pages.categories')->withCategories($categories);
}
else { // either main_categories.name not in $slug or there is no category available for this main_category
}
}
}
代码正常工作,列出了同一个集合对象中的产品和类别。
现在还有一个案例。我如何检查结果集合,以便我可以区分给定$slug
的名称中是否存在 main_category ,或者< 下的类别 em> main_category 与$slug
。
请参阅代码,count($categories)
返回0
两种情况。我并不坚持我雄辩的方式。您可以建议我使用PHP进行另一次查询或条件检查。
我会很感激能帮助我防止这种情况变得更加复杂的任何事情。
[PS:所有关系都是直接的,非常基本的(belongsTo
和hasMany
)和表名是共同的标准 - Laravel 5的做法(使用v5.2) 。如果在我的问题中需要/缺少一行代码,我想你会得到的。随意询问您是否还需要任何东西。]
答案 0 :(得分:0)
只有在main_categories.slug中找到$ slug时,你的查询才会给出结果,否则它不会给出任何结果。