Php 如何在公共函数的数组中返回两个不同的结果?
我正在为搜索引擎制作一个Zend框架方法。因为我在不同的表中搜索,所以我还必须生成两个不同的select变量并返回它。我的问题是:对于一个有不同表格的搜索引擎来说,这是个好主意吗 如何在数组中返回不同的结果?(Php 如何在公共函数的数组中返回两个不同的结果?,php,zend-framework,Php,Zend Framework,我正在为搜索引擎制作一个Zend框架方法。因为我在不同的表中搜索,所以我还必须生成两个不同的select变量并返回它。我的问题是:对于一个有不同表格的搜索引擎来说,这是个好主意吗 如何在数组中返回不同的结果?(fetchall->$selectMovies,fetchall->$selectPosts) 谢谢,格里茨·埃里克 public function search($keyword) { $selectPosts = $this->select();
fetchall->$selectMovies
,fetchall->$selectPosts
)
谢谢,格里茨·埃里克
public function search($keyword) {
$selectPosts = $this->select();
$selectPosts->from('posts', array('*'));
$selectPosts->where('posts.post_title LIKE ? OR posts.post_body LIKE ?', '%'. $keyword . '%' );
$tblMovies = new Model_DbTable_Film();
$selectMovies = $tblMovies->select();
$selectMovies->from('film', array('*'));
$selectMovies->where('film.titel LIKE ? OR film.omschrijving LIKE ?', '%'. $keyword . '%' );
//var_dump($this->fetchAll($selectPosts, $selectMovies)); die;
return $this->fetchAll($selectMovies);
return $this->fetchAll($selectPosts);
}
只能返回一次,但可以返回结果数组的数组
<?php
public function search($keyword) {
$selectPosts = $this->select();
$selectPosts->from('posts', array('*'));
$selectPosts->where('posts.post_title LIKE ? OR posts.post_body LIKE ?', '%'. $keyword . '%' );
$tblMovies = new Model_DbTable_Film();
$selectMovies = $tblMovies->select();
$selectMovies->from('film', array('*'));
$selectMovies->where('film.titel LIKE ? OR film.omschrijving LIKE ?', '%'. $keyword . '%' );
//var_dump($this->fetchAll($selectPosts, $selectMovies)); die;
return array('movies'=>$this->fetchAll($selectMovies),
'posts'=>$this->fetchAll($selectPosts));
}
?>
或者将方法拆分为2,并将搜索类型作为参数传递给主搜索方法:
<?php
public function search($keyword,$type) {
return $this->{$type}($keyword);
}
public function search_movies($keyword) {
$tblMovies = new Model_DbTable_Film();
$selectMovies = $tblMovies->select();
$selectMovies->from('film', array('*'));
$selectMovies->where('film.titel LIKE ? OR film.omschrijving LIKE ?', '%'. $keyword . '%' );
return $this->fetchAll($selectMovies);
}
public function search_posts($keyword) {
$selectPosts = $this->select();
$selectPosts->from('posts', array('*'));
$selectPosts->where('posts.post_title LIKE ? OR posts.post_body LIKE ?', '%'. $keyword . '%' );
return $this->fetchAll($selectPosts);
}
?>
<?php
$result['movies'] = $model->search($keyword,'search_movies');
$result['posts'] = $model->search($keyword,'search_posts');
?>
只需将查询合并为一个查询,并将其留给数据库即可。不应混合使用两个表对象的结果。显然,您正在与“帖子”相关的对象范围内搜索。您添加了一个与“电影”相关的完全不同的对象。这两个不应该在这一层混合。如果要合并两个表的搜索结果,请添加另一个对象,该对象通过询问每个表对象有关搜索结果来进行合并。