CakePHP,为多选框设置复杂/多个查找条件

发布于 2024-08-16 18:18:20 字数 2479 浏览 7 评论 0原文

我有一个名为“制造商名称”的多选框,该框显示正确,甚至可以单击进行多重搜索。当我运行搜索时,我没有使用我设置的复杂查找条件从数据库中获得任何结果。我尝试使用面包店和其他各种网站的 Complex-Find-Conditions 但无济于事。

//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] => 
    )
)

I have a multi-select box named Manufacturer Name that is displaying correctly, even clickable for multi search. When I run the search I am not getting any results from my database using the complex find conditions I set. I've tried to use Complex-Find-Conditions from the bakery, and other various websites but no avail.

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

Commented out is things I have tried in my controller for setting the multiple find conditions.

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

}

When I debug and search I am getting the following.

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

        [name] => 
    )
)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尽揽少女心 2024-08-23 18:18:20

尝试将查询条件更改为此

$conditions[] = "ManufacturersProductsLine.manufacturer_id IN (" . implode( ',', $data['ManufacturersProductsLine']['manufacturer_id'] . ")";

try changing the query condition to this

$conditions[] = "ManufacturersProductsLine.manufacturer_id IN (" . implode( ',', $data['ManufacturersProductsLine']['manufacturer_id'] . ")";
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文