我试图根据类别调用列表操作系统,但它不起作用,给我错误:<StackLayout>
<Label [text]="users?.Collection[0].BookingReferenceID"> </Label>
</StackLayout>
。
我已经尝试过从双方打电话,扔了帖子模型的methdos或类别,但同样的错误信息。可以搞清楚我做错了什么。
数据库:
Non-static method App\Category::posts() should not be called statically, assuming $this from incompatible context
控制器:
Posts:
-id;
-title;
-text;
Categories:
-id;
-name;
-internal_name;
category_post:
-id;
-post_id;
-category_id
模特职位:
public function categoryPostList($category)
{
$category = Category::posts()->where('internal_name',$category)->first();
$posts = Post::categories()->where('category_id',$category->id)->get();
dd($posts)
}
模特类别:
class Post extends Model
{
public function categories()
{
return $this->belongsToMany(Category::class);
}
}
答案 0 :(得分:1)
首先,如果关系是多对多(您使用数据透视表),那么您的关系应该是belongsToMany()
,而不是belongsTo()
。
加载关系您应该使用with()
方法。例如,如果您要加载一个包含所有帖子的类别:
Post::where('category_id', $category->id)->with('categories')->first();
答案 1 :(得分:0)
您可以将whereHas
用作:
$category = Category::where('internal_name',$category)->first();
$posts = Post::whereHas('categories', function($q) use($category) {
$q->where('category_id',$category->id);
})->get();
或者
$category = Category::where('internal_name',$category)->first();
$posts = $category->posts;
whereHas
方法用于放置&#34;其中&#34;你的条件 查询。