CakePHP, Configuración de un múltiplo condición compleja / hallazgo de una caja de selección múltiple

StackOverflow https://stackoverflow.com/questions/2001351

Pregunta

Tengo una caja de llamada de selección múltiple Nombre del fabricante que se muestra correctamente, incluso se puede hacer clic para la búsqueda múltiples. Cuando ejecuto la búsqueda no estoy recibiendo ningún resultado de mi base de datos con las condiciones de búsqueda complejas que puse. He tratado de utilizar complejas-find-Condiciones de la panadería, y varios otros sitios web, pero en vano.

//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>

comentada es lo que he tratado en mi controlador para configurar las múltiples condiciones de búsqueda.

//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))));

}

Cuando la depuración y búsqueda Estoy recibiendo el siguiente.

Array
(
[ManufacturersProductsLine] => Array
    (
        [manufacturer_id] => Array
            (
                [0] => 1
                [1] => 2
            )

        [name] => 
    )
)
¿Fue útil?

Solución

intente cambiar la condición de consulta a este

$conditions[] = "ManufacturersProductsLine.manufacturer_id IN (" . implode( ',', $data['ManufacturersProductsLine']['manufacturer_id'] . ")";
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top