Всем привет. Есть следующий запрос:
$partners = \common\models\Friends::find()
->where(['friends.user_id' => $user->id])
->join('INNER JOIN', 'user', 'friends.friend_id = user.id')
->select('user.*')
->all();
Он полностью эквивалентен обычному SQL:
SELECT `user`.* FROM `friends`
INNER JOIN `user` ON friends.friend_id = user.id
WHERE `friends`.`user_id`=24
Если я делаю второй запрос прямиком в БД, то результат выводится адекватно. Но дамп $partners дает пустой результат:
array(1) {
[0]=>
object(common\models\Friends)#146 (10) {
["_attributes":"yii\db\BaseActiveRecord":private]=>
array(0) {
}
["_oldAttributes":"yii\db\BaseActiveRecord":private]=>
array(0) {
}
["_related":"yii\db\BaseActiveRecord":private]=>
array(0) {
}
["_relationsDependencies":"yii\db\BaseActiveRecord":private]=>
array(0) {
}
["_errors":"yii\base\Model":private]=>
NULL
["_validators":"yii\base\Model":private]=>
NULL
["_scenario":"yii\base\Model":private]=>
string(7) "default"
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
array(0) {
}
}
}
Почему в yii я получаю отличный от SQL результат?
Могу предположить, что должно быть как-то так
$partners = \common\models\Users::find()
->join('INNER JOIN', 'friends', 'friends.friend_id = user.id')
->where(['friends.user_id' => $user->id])
->all();
А вообще, если я правильно понимаю, у пользователя вытаскивается его друзья, я думаю, лучше это засунуть в метод модели Users и организовать код через $this->hasMany
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости