Laravel 5:检查类别集合是否具有有效结果或根本没有记录

时间:2018-04-12 14:57:30

标签: php laravel laravel-5 eloquent relationship

多级数据库表和雄辩系统的一个非常随意的问题。

  

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:所有关系都是直接的,非常基本的(belongsTohasMany)和表名是共同的标准 - Laravel 5的做法(使用v5.2) 。如果在我的问题中需要/缺少一行代码,我想你会得到的。随意询问您是否还需要任何东西。]

1 个答案:

答案 0 :(得分:0)

只有在main_categories.slug中找到$ slug时,你的查询才会给出结果,否则它不会给出任何结果。