Опитвам се да потърся базата данни, като използвам CDbCriteria
в Yii 1
, Това, което правя, е:
$criteria->addInCondition("t.id", $dealIdArr);
$criteria->order = "FIELD(t.id, $dealIdArr)";
И това е $dealIdArr
и не е празен:
Array ( [0] => 3 [1] => 2 )
Но когато стартирате скрипта, той връща грешката:
CDbCommand не успя да изпълни SQL оператор: SQLSTATE [42S22]: Колоната не е намерена: 1054 Неизвестна колона "Масив" в "клауза за поръчка".
Аз съм в състояние да разберат какво не е наред с това? Всяка помощ?
Отговори:
2 за отговор № 1В момента добавяте масив към двете условия. Не съм много запознат с Yii, но съм сигурен, че очаква низ за поръчката - а не масив.
Можеш implode()
да го преобразува в низ.
$dealIdStr = implode(", ", $dealIdArr);
$criteria->addInCondition("t.id", $dealIdArr); // You can use array here
$criteria->order = "FIELD(t.id, $dealIdStr)"; // This expects a string
Тъй като понастоящем масивът ви съдържа само цели числа (3 и 2), не е необходимо да го цитирате - но ако масивът по някаква причина съдържа низове, трябва да ги цитирате в MySQL, като правите
$dealIdStr = implode("", "", $dealIdArr);
$criteria->order = "FIELD(t.id, "$dealIdStr")";
Обърнете внимание на добавените единични кавички.
Когато се опитате да използвате масив като низ, PHP просто ще отпечата "Array", което е това, което виждате сега.