私はたき火/ciの初心者です。bf / ciモデルメソッドをチェーンして、次のSQLステートメントを再作成しようとしています。
SELECT prod_cat.cat_id,
prod_cat.prod_id,
prod.enabled,
prod.name,
prod.prod_id,
FROM prod_cat, prod
WHERE prod.is_enabled = 1
AND prod_cat.cat_id =15
AND prod_cat.prod_id = prod.prod_id
ORDER BY prod.name DESC
私はbf/ciprod_modelとprod_cat_modelを持っています。
cat_id 15に一致するすべての製品を取得するには、次のように実行できることを知っています。たとえば、次のようになります。
$this->load->model('cat/prod_cat_model');
$records = $this->prod_cat_model->find_all_by('cat_id' => $cid);
同様に、製品テーブルでfind_all_byを使用して、次のようにアクティブ/有効なレコードに制限する予定です。
$this->prod_model->find_all_by('enabled', 1);
まず、テストとして、次のように配列をprod_modelに渡すことで、これら2つのコードを組み合わせようと考えていました。
public function productsincategory($cid)
{
$this->load->model('cat/prod_cat_model');
$criteria = array(
'enabled' => 1,
'prod_id' => $this->prod_cat_model->find_all_by('cat_id', $cid)
);
$records = $this->prod_model->find_all_by($criteria) ;
}
エラーメッセージが表示されます:
'where句'の不明な列'配列'
SELECT * FROM(
prod
)WHEREenabled
= 1ANDprod_id
=配列
これは理にかなっています...しかし、「select * from prod where enabled = 1 and prod_id in(prod ids from prod_cat table)」のように修正する方法がわかりません。 )」しかし、それは焚き火によって認識されていないようです。ありがとう。