Cakephp搜索MySQL

Nic*_*o77 7 php cakephp

对使用MySQL数据库的Cakephp应用程序进行基于文本的搜索的哪种实现是"最好的"?

Ash*_*hok 7

我是如何实现搜索帖子的:

搜索表单代码:

<?php
echo $form->create('Deal',array('action' => 'search'));
echo $form->input('Deal.search');
echo $form->end('Search');
?> 
Run Code Online (Sandbox Code Playgroud)

在Controller中,输入以下搜索功能:

function search()
{
    if (!empty($this->data)) {
        $searchstr = $this->data['Post']['search'];
        $this->set('searchstring', $this->data['Post']['search']);
        $conditions = array(
            'conditions' => array(
            'or' => array(
                "Post.title LIKE" => "%$searchstr%",
                "Post.description LIKE" => "%$searchstr%"
            )
            )
        );
        $this->set('posts', $this->Post->find('all', $conditions));
    }
} 
Run Code Online (Sandbox Code Playgroud)

视图代码:

<?php foreach ($posts as $post): ?>
    <tr>
        <td><?php echo $post['Post']['id']; ?></td>
        <td>
            <?php echo
$html->link($post['Post']['title'],'/posts/view/'.$post['Post']['id']);?>
                </td>
        <td><?php echo $post['Post']['created']; ?></td>
    </tr>
<?php endforeach; ?> 
Run Code Online (Sandbox Code Playgroud)

可能不是最好的/优雅的,但适用于简单的查询.


Dav*_*ell 0

我总是倾向于制作一个“搜索”模型、“SearchesController”和视图,然后编写自己的自定义脚本来搜索我的数据库,

$this->Search->query("SELECT * FROM table WHERE condition 1 AND condition 2");
Run Code Online (Sandbox Code Playgroud)

我不知道任何“最佳”搜索,但很可能有组件和插件可以为您做类似的事情。最好检查一下面包店http://bakery.cakephp.org/