0

検索エンジン用の Zend フレームワーク メソッドを作成しています。さまざまなテーブルを検索するため、2 つの異なる選択変数を作成して返す必要もあります。私の質問は次のとおりです。これは、異なるテーブルを持つ検索エンジンにとって良い考えですか?

そして、配列内の異なる結果を返す方法は? ( 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); 

    }
4

1 に答える 1

0

返せるのは 1 回だけですが、結果配列の配列を返すことができます。

<?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');
?>
于 2012-11-04T14:51:29.640 に答える