我有以下模特关系。
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区的所有促销活动
答案 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 );