2015-05-28 5 views
0

У меня есть следующие отношения модели.Laravel 5 Зловонное состояние с поворотным устройством

promotions: [id, title, description] 

sectors: [id, name] 

promotion_sector: [promotion_id, sector_id] 

class Promotion extends Model { 
    public function sectors() { 
     return $this->belongsToMany('App\Sector'); 
    } 
} 

Я хочу, чтобы получить акции, которые в определенных секторах.

Например,

Все акции в секторе А и В

ответ

0

Я не знаю, какой тип отношений вы используете. Я предполагаю, что это будет Many-To-Many Отношения.

Так вот код, который вы можете попробовать:

$result = DB::table('promotion_sector') 
      ->join('promotions', 'id', '=', 'promotion_sector.promotion_id') 
      ->join('sectors', 'id', '=', 'promotion_sector.sector_id') 
      ->select('sectors.name AS sector_name') 
      ->get(); 

dd($result); 

И если вы просите для ввода от пользователя:

$result = DB::table('promotion_sector') 
       ->join('promotions', 'id', '=', 'promotion_sector.promotion_id') 
       ->join('sectors', 'id', '=', 'promotion_sector.sector_id') 
       ->where('sectors.name', '=', $request->input('name_of_the_field')) 
       ->select('sectors.name AS sector_name') 
       ->get(); 

dd($result); 
+0

Спасибо, это было полезно – user3463927

+0

Most welcome .. :) –

1

Чтобы получить все секторы, связанные с повышением.

Попробуйте это:

class Promotion extends Model { 

    public function sectors() { 
     return $this->belongsToMany('App\Sector', 'promotion_sector', 'promotion_id', 'sector_id'); 
    } 
} 

Чтобы проверить, попробуйте это в ремесленном повозиться:

$pro = App\Promotion::find(1); 
$pro->sectors; 
$pro; 

Вы получите список всех секторов, связанных с продвижением с идентификатором 1.

Для сделайте обратное, что вы задали в вопросе.

Вы должны сделать это:

class Sector extends Model { 

    public function promotions() { 
     return $this->belongsToMany('App\Promotion', 'promotion_sector', 'sector_id', 'promotion_id'); 
    } 
} 

Чтобы проверить, попробуйте это в ремесленном повозиться:

$sec = App\Sector::find(1); 
$sec->promotions; 
$sec; 

Вы получите список всех поощрений, связанных с сектором с идентификатором 1.

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