【发布时间】:2016-11-05 13:32:21
【问题描述】:
) 我有方法:
public function show($id){
$categories = Category::findOrFail($id);
$productsList = Category::with(['products' => function ($query) {
$query->where(['category_id', 19]);
}])->get();
return view('categories.showcategory', compact('categories', 'productsList'));
}
此方法返回所选类别中的产品列表。编号 19 是选定的 ID 类别。所选类别中产品列表的 URL 如下所示:www.[...]magazyn_michal/public/addcategory/19 问题是:如何传递动态值数字方法的 URL 的 ID 类别 (19) ?? 我试试这个(但不起作用):
public function show($id){
$categories = Category::findOrFail($id);
$productsList = Category::with(['products' => function ($query) {
$query->where(['category_id' => $categories->id]);
}])->get();
return view('categories.showcategory', compact('categories', 'productsList'));
}
Laravel 返回:
未定义变量:类别
这种方式也行不通:
public function show($id){
$categories = Category::findOrFail($id);
$productsList = Category::with(['products' => function ($query) {
$query->where('category_id', Input::get('category_id'));
}])->get();
return view('categories.showcategory', compact('categories', 'productsList'));
}
Laravel 什么都不会返回。所选类别中的产品列表为空。
routes.php 文件:
Route::get('/', 'ProductsController@index');
Route::get('/contact', 'PagesController@contact');
Route::resource('/addarticle', 'ArticlesController');
Route::resource('/addcategory', 'CategoriesController');
Route::resource('/listcategory', 'CategoriesController@listCategory');
Route::resource('/warehouse', 'ProductsController');
Route::auth();
Route::get('/home', 'HomeController@index');
模型类别.php:
public function products(){
return $this->hasMany('App\Product');
}
model product.php:
public function category(){
return $this->belongsTo('App\Category');
}
我用这个:https://laravel.com/docs/5.2/eloquent-relationships#constraining-eager-loads
【问题讨论】:
-
您需要发布您的路线,以便我们看到它是如何设置的
-
@Rob Fonseca 我更新我的帖子
-
您的控制器中是否有 dd($categories) 以确保它实际上是从数据库中拉出一个?您的路线、方法定义和将类别从模型中拉出似乎没有任何问题,因此要确保您实际上首先获得了类别。
-
@RobFonseca
$categories = Category::findOrFail($id); dd($categories);回复了这个:link
标签: php laravel url methods transmission