我在cakePHP中创建了一个非常简单的搜索函数,并希望动态地从一个for循环中填充一个数组。
我想创建一个数组,将put作为第二个参数设置在find() - 函数中。
这是我的静态结果:
$result = $this->Book->find('all', array('conditions' =>
array("Book.book_title LIKE" => "%war%"),
"OR" =>
array("Book.book_title LIKE" => "%and%"),
"OR" =>
array('Book.book_title LIKE' => "%peace%")
));
$this->set('searchResult', $result);
我的第一个直觉是这样做:
$search = $this->request->query['q'];
$words = explode(" ", $search);
$count = count($words);
然后从中创建一个for循环,但是" OR =>"整合给我带来很多麻烦。 任何人都可以帮助我做这个循环吗?
提前致谢,Jesper。
答案 0 :(得分:1)
为什么让生活如此复杂? 使用OR一次作为主键,并在其下面使用一个简单的数组:
$conditions = array(
'OR' => array(
array('Book.book_title LIKE' => '%term1%'),
array('Book.book_title LIKE' => '%term2%'),
...
)
)
嵌套数组是必要的,以避免重用相同的数组键(在PHP中不起作用)。
如果它来自爆炸的搜索查询字词,请使用foreach来保持干燥(不要重复自己)
$terms = explode(' ', $his->request->query('q'));
foreach ($terms as $term) {
$conditions['OR'][] = array('Book.book_title LIKE' => '%' . $term . '%'),
}