2016-04-09 4 views
1

Я использую CakePhp 3.x, и я пытаюсь фильтровать данные на основе связанных данных. Пусть Предположим, у меня есть две модели пользователей и профилиКак получить только те записи, у которых нет связанной записи?

пользователя С-одна профиля и профили принадлежит пользователю.

поэтому я хочу получить тех пользователей, у кого нет профиля, любезно помогите мне, как я могу применить условия?

$this->Users->find('all',[ 
    'conditions'=>['Profile.id'=>Null] 
]) 

Я пытался, как это, я вещь, что неправильно, а затем я попытался его содержать, но содержат делает фильтр на попутных данных не пользователь, так есть ли способ, чтобы получить тот пользователь, у кого нет профиля?

ответ

1

Смотрите ниже Ссылка: -

http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#using-notmatching

Есть три типа фильтрации данных по базам данных, связанных.

1 ->соответствие

2 ->noMatching

3 -> См по ссылке выше

Matching Эта функция фильтры результатов, которые имеют отношение к указанной ассоциация: на данный момент это профили.

$this->Users->find()->matching('Profiles') //This will get those user how have profile 

NoMatching

Противоположностью согласования() является notMatching(). Эта функция будет изменить запрос таким образом, чтобы он фильтрует результаты, которые не имеют никакого отношения к указанной ассоциации:

$this->Users->find()->noMatching('Profiles') //This will get those user how have no profile 
0

Вы могли бы попробовать что-то вроде этого:

$query = $this->Users->find() 
    ->contain([ 
    'Profiles' => function ($q) { 
     return $q 
     ->select(['id', 'name']) // Your profile fields, say id, name etc. 
     ->where(['Profiles.id' => NULL]); 
    } 
]); 

Надеется, что это помогает.

+0

увидеть эту ссылку http://book.cakephp.org/3.0/en/orm/query-builder.html # использование-notmatching и спасибо за помощь. –

+0

@MuhammadAsifSaleem Если вы прочтете это и ответите на свой вопрос, сделайте это, разместив решение как реальный ответ - спасибо! – ndm

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