Laravel 5带有枢轴的雄辩条件

时间:2015-05-28 04:56:10

标签: eloquent 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');
    }
}

我想获得特定行业的促销活动。

例如,

A区和B区的所有促销活动

2 个答案:

答案 0 :(得分: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;

您将获得与ID 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;

您将获得与Id 1相关的所有促销列表。

答案 1 :(得分: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 );