@yii16

Как получить ответ в Query Builder?

Есть запрос
$query = Country::find();
$SubQuery = $query->select(['id'])->from('partner')->where(['phone' => 9301111111])->createCommand()->rawSql;
echo '<pre>'; var_dump($SubQuery); echo '</pre>';

В результате в переменной $SubQuery находится правильный ответ, т.е. запрос:
string(51) "SELECT `id` FROM `partner` WHERE `phone`=9301111111"

Если выполнить этот запрос в БД получим результат - одну строку id=1
Теперь поставим ->one() что бы он отдавал результат, а не показывал сырой запрос:
$SubQuery = $query->select(['id'])->from('partner')->where(['phone' => 9301111111])->one();

Теперь var_dump($SubQuery) показывает нам:
object(app\models\Country)#96 (8) {
["_attributes":"yii\db\BaseActiveRecord":private]=>
array(0) {
}
["_oldAttributes":"yii\db\BaseActiveRecord":private]=>
array(0) {
}
["_related":"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) {
}
["_behaviors":"yii\base\Component":private]=>
array(0) {
}
}

При внимательном рассмотрении видно что ни один элемента объекта не содержит нужное значение в виде единицы. Почему так, в чём ошибка?
  • Вопрос задан
  • 133 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Arik
Вроде ID относится к первичному ключу и его нет в атрибутах, а в селект вы указали только его выборку; Если просто id надо, то $SubQuery->id, если и другие поля то перечислить их надо в select или вообще убрать, тогда он все поля вернет. По вопросу не ясно что вы хотите
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Если Вы выбираете по "phone", то почему его нет в select?
Попробуйте:
$model = Country::find()
->select(['id','phone'])
->from('partner')
->where(['phone' => 9301111111])
->one();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы