我有两个模型广告系列和联系人:
class Campaign extends Model {
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['name'];
public function contacts()
{
return $this->belongsToMany('App\Contact', 'campaign_contacts');
}
}
class Contact extends Model {
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['title', 'gender', 'first_name', 'last_name', 'company', 'position', 'website_url', 'facebook_url', 'twitter_url', 'instagram_url', 'misc_url1', 'misc_url2', 'address_1', 'address_2', 'citytown', 'postcode', 'country_id', 'work_email', 'home_email', 'work_phone', 'mobile_phone', 'home_phone', 'general_notes', 'latitude', 'longitude'];
// relationship to categories
public function campaigns()
{
return $this->belongsToMany('App\Campaign', 'campaign_contacts');
}
}
因此,联系人可以属于多个广告系列,广告系列可以包含多个联系人。如果我有广告系列ID,如何检索不属于该广告系列ID的所有联系人。我一直在研究范围,看起来它可能是要走的路,但如果这是正确的方法,我不确定范围会有什么逻辑。
答案 0 :(得分:1)
您可以尝试此操作(您已在$campaignId
变量中设置了campaign_id):
$contacts = Contact::whereHas('campaigns', function($query) use ($campaignId) {
$query->where('campaign_id', '!=', $campaignId)->orWhereNull('campaign_id');
})->get();