簡體   English   中英

如何在Laravel Eloquent中使用join

[英]How to use join in Laravel Eloquent

有一個問題,不知道要解決它,我有三個表

  1. 帖子
  2. 分類
  3. category_type

以及以上三個表之間的關系

category_type has many categories 

category has many post 

現在我想在數據庫中查詢以下數據

我想獲得所有category_typeWorld News帖子

1個帖子模型

 <?php namespace App; use Carbon\\Carbon; use Illuminate\\Database\\Eloquent\\Model; class Post extends Model { public function tags() { return $this->belongsToMany('App\\Tag','post_tags')->withTimestamps(); } public function categories() { return $this->belongsToMany('App\\Category','category_posts'); } public function getRouteKeyName() { return 'slug'; } public function getCreatedAtAttribute($value) { return Carbon::parse($value)->diffForHumans(); } public function author() { return $this->belongsTo(Author::class); } } 
2-類別模型

 <?php namespace App; use Illuminate\\Database\\Eloquent\\Model; class Category extends Model { public function type(){ return $this->belongsTo(Type::class); } public function posts() { return $this->belongsToMany('App\\Post','category_posts'); } } 

3- Category_Type模型

 <?php namespace App; use Illuminate\\Database\\Eloquent\\Model; class Type extends Model { public function categories(){ return $this->hasMany(Category::class); } } 

有人知道嗎?

您可以通過在帖子模型中的定義關系上使用whereHas過濾器來獲取所有帖子,如下所示:

$type = 'World News';
$posts = Post::whereHas('categories.type', function ($query) use($type) {
    $query->where('name', '=', $type);
})->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM