У меня есть поле выбора с именем производителя, которое отображается правильно, даже кликабельное для многократного поиска. Когда я запускаю поиск, я не получаю никаких результатов из своей базы данных, используя сложные условия поиска, которые я установил. Я пытался использовать Complex-Find-Conditions из пекарни и других различных веб-сайтов, но безрезультатно.CakePHP, Установка сложного/множественного условия поиска для окна многократного выбора
//This my index.ctp
<?=$form->create('ManufacturersProductsLine', array('action'=>'index'));?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<?=$f->label('ManufacturersProductsLine.manufacturer_id', 'Manufacturer Name:'); ?>
<?=$f->select('ManufacturersProductsLine.manufacturer_id', $manufacturers, null, array('multiple'=>'multiple', 'style'=>'height:100px;'))?>
</td>
<td>
<?=$f->label('ManufacturersProductsLine.name', 'Product Name:'); ?>
<?=$f->text('ManufacturersProductsLine.name', array('style'=>'width:140px;'));?>
</td>
<td>
<label></label>
<input name="Search" class="blue" type="submit" value="Search Product Lines" />
</td>
</tr>
</table>
Прокомментировано, что я пытался в своем контроллере установить несколько условий поиска.
//This is my manufacturers_products_lines_controller.php
function index() {
$conditions = array();
if (!empty($this->data)) {
$data = $this->data;
$conditions[] = "(LOWER(ManufacturersProductsLine.manufacturer_id) LIKE '%{$data['ManufacturersProductsLine']['manufacturer_id']}%')";
//$conditions = array("ManufacturersProductsLine.name" => array("Akuret", "Bridgestone", "American Radials"));
debug($this->data);
}
$this->Manufacturer->recursive = 1;
$this->set('manufacturersproductslines', $manufacturersproductslines = $this->paginate('ManufacturersProductsLine', $conditions));
$Manufacturer = getModel('Manufacturer');
$this->set('manufacturers', $Manufacturer->find('list'));
//$this->ManufacturersProductsLine->recursive = 0;
//$this->Post->find('all', array('conditions' => array('ManufacturersProductsLine.manufacturer_id' =>array(0,1,2,3,4,5,6,7,8,9,10,11,12,13))));
}
Когда я отлаживаю и ищу, я получаю следующее.
Array
(
[ManufacturersProductsLine] => Array
(
[manufacturer_id] => Array
(
[0] => 1
[1] => 2
)
[name] =>
)
)
Пусть торт обрабатывать поколение SQL: '$ условия [ "ManufacturersProductsLine.manufacturer_id"] = $ данных [ 'ManufacturersProductsLine'] [ 'manufacturer_id'] ; 'Если условие является массивом, оно автоматически преобразуется в" x IN (y) " – nickf
Спасибо Nickf! Я не знал, что вы можете автоматически создавать инструкцию IN SQL. Я действительно решил свою собственную проблему (см. Ниже), но ваш путь намного чище. foreach ($ this-> data ['ManufacturersProductsLine'] ['manufacturer_id'] AS $ key => $ value) { $ conditions ['or'] [] = 'ПроизводителиProductsLine.manufacturer_id ='. $ Value;} – Stirling
очень признателен! – zam3858