我正在升级并将我的网站重构为laravel 5.5,此代码现在给我一个问题。我在laravel github文档中搜索过,并没有找到任何可能影响这一点的重大变化。
我想要做的是在我的网站中相关部分,在每个食谱页面中,我想要显示更多具有相同类别的食谱。
这是我的代码:
public static function getRelatedRecipes($recipe){
$related_category_ids = $recipe->category()->pluck('categories.id');
return $relatedRecipes =
Recipe::whereHas('categories', function ($q)use($related_category_ids){
$q->whereIn('category_id', $related_category_ids);
})
->where('id', '<>', $recipe->id)
->take(4)
->inRandomOrder()
->get();
}
这是食谱模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Recipe extends Model
{
protected $guarded=[];
/**
* Get the route key name for Laravel.
*
* @return string
*/
public function getRouteKeyName()
{
return 'slug';
}
public function category()
{
return $this->belongsToMany('App\Category');
}
}
可能是什么问题?
谢谢,
P.S
如果您认为需要其他任何代码来解决此问题,请告诉我,我会在此处发布。 :)
答案 0 :(得分:2)
首先请确保您在方法中使用的Recipe
是模型,因此不是
Recipe::whereHas('categories', function ($q)use($related_category_ids){
使用
\App\Recipe::whereHas('categories', function ($q)use($related_category_ids){
另一件事就是这种categories
关系。在模型中,您没有categories
关系,您只有category
关系