2016-04-29 145 views
0

我有2個表用於獲取laravel雄辯中的內部連接查詢記錄,但不能與聯合數據獲取一起使用。Laravel雄辯加入使用屬於

表:類別

  1. ID
  2. cat_status

表:圖像

  1. 標題
  2. 遞減
  3. img_status

圖像控制器

//get all active images  
    ImageModel::where('status',true)->get();  
    public function getCategory() { 
      return $this->belongsTo('\App\Api\CategoryModel','cat_id');  

GET類別活躍,只有

public function getActiveCategory() { 
      return $this->getCategory()->where('cat_status','=', 1); 
     } 

我只需要哪一類是主動獲取,只有圖像。

if cat 1,2,3 3(is inactive) 
image table 
title=a1,cat_id=1, 
title=a2,cat_id=2, 
title=a3,cat_id=3 

現在我得到所有3張圖片,我只需要前2張,因爲cat_id 3是不活動的。 任何想法如何加入狀態條件。
在此先感謝。

+0

你屬於方法應該我在模型不在控制器。 –

+0

對不起。我錯誤地添加了..在這裏粘貼在控制器部分。屬於條件是模型。 – shashik493

+0

您可以使用預先加載選項來檢索。它在文檔中很清楚 –

回答

0

那麼關係方法不提供連接。你必須手動完成。 如果你想從活動圖像類別,然後你要先查詢這樣的:

// method from image model 
public function getImagesFromActiveCategory() { 
    return $this->join('category') 
     ->select('image.*') 
     ->join('category', 'category.id', '=', 'image.cat_id') 
     ->where('cat_status','=', 1) 
     ->get(); 
} 
0

感謝您給予快速反應, 我試圖用其他的,但現在的使用解決了belongsToMany方法。 下面的函數給出了來自DB的精確記錄,這些記錄與每個類別和圖像表匹配,並且僅與類別狀態活動記錄相匹配。

#Image Controller 
$images= ImageModel::where('status',true)->get(); 
    foreach($images as $img){ 
    #get data 
    $onlyactiveCategoryImages=$img->getActiveCategory()->get(); 
    } 

#image Model 

    #get category data 
    public function getCategory() { 
    return $this->belongsToMany('\App\Api\CategoryModel','images','id','cat_id'); 
    } 

    #get category active only 
     public function getActiveCategory() { 
     return $this->getCategory()->where('cat_status','=', 1); 
    } 

再次謝謝大家:)。