laravel将多个变量传递到控制器视图中

时间:2015-04-03 23:18:44

标签: php laravel laravel-5

我正在尝试获取url,例如localhost / cat / restaurants / this-is-a-test,但在尝试加载网址时会抛出错误。

我有2个数据库表'评论'和'分类'

评论 - id,cat_id,slug,categorys - id,cat

我有一个通过cat_id链接两个表的模型

SQLSTATE [42S22]:未找到列:1054未知列' cat'在' where子句' (SQL:select * from reviews where cat = Restaurants and slug = this-is-a-test)

我猜它正在努力拉扯“猫”。从评论表而不是' categories'但是在我的刀片模板中,我有网址路径 - {!! URL :: route(' reviews.slug',[$ review-> categorys-> cat,$ review-> slug])!!}它会拉出两个变量并加载url localhost /猫/餐馆/这-is-a的测试

routes.php文件

Route::get('reviews/cat/{cat}/{slug}', ['as' => 'reviews.slug', 'uses' => 'ReviewController@ShowbySlug']); 

reviewcontroller.php

public function ShowBySlug($cat,$slug) {
$slugs = Review::with('reviewimages','maps','categorys')->where('cat',   $cat)->where('slug', $slug)
         ->get();
return View::make('pages.reviews')
       ->with('slugs', $slugs)
       ->with('cat', $cat)
       ;

}

1 个答案:

答案 0 :(得分:2)

您可以使用whereHas按关系进行过滤:

$slugs = Review::with('reviewimages','maps','categorys')
     ->whereHas('categorys', function($q) use ($cat){
         $q->where('cat', $cat);
     })
     ->where('slug', $slug)
     ->get();