私はこれについて何日も考えていて、理解できません(私はMVCとCIに比較的慣れていないため)。これが MVC の問題なのか、MySQL の問題なのか、配列の問題なのかさえわかりません。
状況: 2 つの MySQL テーブル
- テーブルデータ:id、title、list
- テーブルの値: ID、名前
データテーブルをクエリすると、次のような配列が返されます (抜粋)。
[4] => Array
(
[id] => 3
[title] => Foo
[list] => 1,2,3,4,6,14
)
[5] => Array
(
[id] => 4
[title] => Bar
[list] => 2,6,9,12
)
フィールドリストには、次のような値テーブルのいくつかの ID に対応するカンマ区切りの値が含まれています
[3] => Array
(
[id] => 12
[name] => 'value12'
)
各行でやろうとしていることは次のとおりです。
- リスト値を取り、それを配列に分解します
- 値テーブルからの結果セットを確認します(in_array() メソッド経由)
- の場合、ID の名前の値を返します。
何らかの方法でメインの結果セットに含めます(たとえば、2 次元配列として):
[5] => 配列 ( [id] => 4 [タイトル] => バー [リスト] => 配列 ( [0] => 値6 [1] => 値12 ... ) )
これまでの私の素朴なアプローチは、
- 2 つのテーブルのそれぞれに対してクエリを実行する
- in_array を介して 2 つの結果セットを比較します
私の主な問題(モデル、コントローラー、ビューを厳密に分離しようとしている間):データテーブルの結果セットの「メインループ」に値テーブルの名前フィールドを含めるにはどうすればよいですか?
if($q->num_rows() > 0)
{
$data[] = $q->result_array();
foreach ($q->result() as $row)
{
$data[] = $row;
}
return $data;
}
次の(面倒な)アプローチを使用すると、毎回新しいアイテムを自然に取得します。
foreach ($q->result_array() as $row)
{
$data[]['id'] = $row['id'];
$data[]['title'] = $row['title'];
$data[]['list'] = $row['year'];
}
これは MySQL データベースであるため、SQL で (LIKE などを使用して) 爆発と比較を行う方法がわかりません。
情報ビットへの単純なリンクであっても、どんなヒントでも大歓迎です。
1兆ありがとう!
ファブ