如何检查联系人是否属于laravel 5中的广告系列

时间:2015-04-11 18:00:47

标签: php laravel laravel-5

我有两个模型广告系列和联系人:

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的所有联系人。我一直在研究范围,看起来它可能是要走的路,但如果这是正确的方法,我不确定范围会有什么逻辑。

1 个答案:

答案 0 :(得分:1)

您可以尝试此操作(您已在$campaignId变量中设置了campaign_id):

$contacts = Contact::whereHas('campaigns', function($query) use ($campaignId) {
    $query->where('campaign_id', '!=', $campaignId)->orWhereNull('campaign_id');
})->get();