0

このスクリプトに問題があります... 正常に動作しますが、クエリで見つかったレコードの合計についてはそうではありません。

「mix」と呼ばれるORMにこの機能があります。mixes、generos、mixes_generos の 3 つのテーブルがあります。

テーブル「ミックス」またはテーブル「ジェネロス」で、誰でも検索できます。

public function search($query, $itemsperpage, $page)
{
    if (empty($page))
        $page = 1;

    $offset = ($page - 1) * $itemsperpage;

    $orm = $this->join('mixes_generos', 'LEFT')->on('mix.id', '=', 'mixes_generos.mix_id')
                ->join('generos', 'LEFT')->on('generos.id', '=', 'mixes_generos.genero_id')
                ->where_open()
                    ->or_where('mix.nombre', 'LIKE', '%'.$query.'%')
                    ->or_where('mix.descripcion', 'LIKE', '%'.$query.'%')
                    ->or_where('generos.nombre', 'LIKE', '%'.$query.'%')
                ->where_close()
                ->and_where('mix.estatus', '=', 'active')
                ->order_by('mix.fecha_produccion', 'DESC')
                ->order_by('mix.track', 'DESC');

    $this->_search_total = $orm->reset(FALSE)->count_all();

    $orm = $orm->limit($itemsperpage)->offset($offset);

    return $orm;
}

public function search_total()
{
    return $this->_search_total;
}

次に、コントローラーにこれがあります:

$data = ORM::factory('mix')->search('pop music', 10, 1);

合計をエコーし​​たい場合は、次のようにします。

echo $data->search_total();

私の見解では、情報を印刷します:

foreach($data->find_all() as $mix)
    echo $mix->nombre;

http://s10.postimage.org/cvnr28nop/records.jpg

このリンクでは、結果が表示されます。列「records_founds」と、見つかった「レコード」の数、3 対 1?? をよく見てください。

そして、それが主な問題です...ミックスのデータを印刷すると、1ではなく3が表示されるためです。また、group_by('mix.id')を追加し、何も追加しません:(

どう思いますか?

ありがとうございました

4

0 に答える 0