私は3つのテーブル、つまりcelebs
,celeb_roles
、celeb_industry
を持っています。
celebs
は、他の2つのテーブルと1対多の関係を持つメインテーブルです。モデルからの多対多リレーションシップとビューの解析
celebs
には、 - のID、名前、国籍、ステータスがあります。
celebs_roles
は、 - というID、celeb_id、role_idという列を持ちます。
celebs_industry
には、 id、celeb_id、industry_idという列があります。
役割と業界は限られており、固定されています。だから私はid=>value
ペアの設定ファイルに入れました。だから私が結果からrole_id
を得たら、私は設定ファイルから値を取ることができます。 industry_id
も同じです。
私は与えられたIDからセレブの詳細を取得するために、以下のようなモデルをモデルに書いています。データベースにおいて
public function getCelebSingle($celebId)
{
$this->db->select('*');
$this->db->from('celebs');
$this->db->join('celebs_roles', 'celebs_roles.celeb_id = celebs.id');
$this->db->join('celebs_industry', 'celebs_industry.celeb_id = celebs.id');
$this->db->where('celebs_roles.celeb_id', $celebId);
$this->db->where('celebs_industry.celeb_id', $celebId);
$query = $this->db->get();
return $query->result_array();
}
同じceleb_idが他の2つのテーブルのそれぞれに2つのレコードを有するcelebs
における1つのレコードが、存在します。 私が得た結果は以下の通りです。
Array
(
[0] => Array
(
[id] => 1
[name] => new test
[nationality] => whatever
[status] => Pending
[celeb_id] => 1
[role_id] => 1
[industry_id] => 1
)
[1] => Array
(
[id] => 1
[name] => new test
[nationality] => whatever
[status] => Pending
[celeb_id] => 1
[role_id] => 3
[industry_id] => 1
)
[2] => Array
(
[id] => 2
[name] => new test
[nationality] => whatever
[status] => Pending
[celeb_id] => 1
[role_id] => 1
[industry_id] => 2
)
[3] => Array
(
[id] => 2
[name] => new test
[nationality] => whatever
[status] => Pending
[celeb_id] => 1
[role_id] => 3
[industry_id] => 2
)
)
だからcelebs
テーブルの1つのレコードのみのために、私は私が過負荷の少しだと思うれ、ループ内でこれを配置する必要があります。他の2つのテーブルでレコードの数が増えると、結果配列の項目も増加します。だから、私は次のような結果を得ることができますか?
Array
(
[0] => Array
(
[id] => 1
[name] => new test
[nationality] => whatever
[status] => Pending
[celeb_roles] => array(
[0] => Array
(
[id] => 1
[celeb_id] => 1
[role_id] => 1
)
[0] => Array
(
[id] => 1
[celeb_id] => 1
[role_id] => 2
)
)
[celeb_industry] => array(
[0] => Array
(
[id] => 1
[celeb_id] => 1
[industry_id] => 1
)
[0] => Array
(
[id] => 1
[celeb_id] => 1
[industry_id] => 2
)
)
)
)
これは結果アレイからの期待にすぎませんが、この結果として得られる配列の取得方法はわかりません。誰かがそれを見ることができますか?
ここには重複の可能性があります - Codeigniter group by and create multidimensional arrayです。しかし、答えは本当に満足です。答えは、JOINを使用しないことを明確に述べていますが、通常のCodeigniter get queryを使用すると3つの質問が出ます。 celebs
テーブルのすべてのレコードを選択するとどうなりますか?次に、クエリの数は3 * Number of records in celebs table
になり、オーバーロードされます。それ以外の方法がない場合は、この方法でのみ行う必要がありますが、これを行うためのより良い方法があることを願っています。
が重複する可能性:http://stackoverflow.com/questions/18745345/codeigniter-group-by-and-create-multidimensional-array – Sebastianb