2016-04-29 2 views
0

У меня есть 2 таблицы для получения внутренних записей запроса соединения в laravel eloquent, но не работает с данными объединения.Laravel Eloquent Присоединение принадлежит

Таблица: категория

  1. идентификатор
  2. имя
  3. cat_status

Таблица: Изображение

  1. ID
  2. названия
  3. убывания
  4. img_status

контроллер изображения категории

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

становится активной только

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

Способы отношения скважин не обеспечивают соединений. Вы должны сделать это вручную. Если Вы хотите, чтобы получить изображения из активных категорий затем you''ll должны запросить так:

// 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

Благодарим Вас за давая быстрые ответы, я пытался использовать другой, но теперь решена с использованием из метода toMany. Ниже перечислены точные записи из БД, которые соответствуют каждой категории и таблице изображений, и только статусные записи категории.

#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); 
    } 

Еще раз спасибо за все :).

Смежные вопросы