Yii のアクティブなレコードを含むデータベースのエントリを削除しようとしています。しかし、私はそれが本当に奇妙に機能すると思います。vehicle_id = 指定された id および plug_id NOT IN (指定された文字列) であるテーブルのすべてのレコードを削除したい
私は多くの方法を試しましたが、何もうまくいきませんでしたが、これは
$query = "delete from `vehicle_details` where `vehicle_id`= ".$vehicle->id." AND `plug_id` NOT IN (".implode(',', array_map(function($item) {
return $item->type;
}, $vehicleDetails->plug)).")";
$command = Yii::app()->db->createCommand($query);
$command->execute();
しかし、なぜこれが機能しないのですか?
VehicleDetail::model()->DeleteAllByAttributes(
array('vehicle_id' => $vehicle->id),
array('condition' => 'plug_id NOT IN (:ids)',
'params' => array('ids' => implode(',', array_map(function($item) {
return $item->type;
}, $vehicleDetails->plug)))));
またはこれ:
VehicleDetail::model()->deleteAll(' vehicle_id = :vehicleId AND plug_id NOT IN (:ids)', array('vehicleId' => $vehicle->id, 'ids' => implode(',', array_map(function($item) {
return $item->type;
}, $vehicleDetails->plug))));
しかし、このクエリから属性を作成して検索すると、うまく機能し、正しいデータが返されます。
説明していただければ幸いです。