私はアクティブレコードを使用してcodeigniterに検索機能を記述しました。私がしたいのは、payment_type = 5で、同じレコードのorder_status = 1であれば、それを省略したいということです。しかし、payment_type = 5とorder_status = 2のレコードが存在する可能性があります。両方の条件が満たされていれば、そのレコードを省略しなければなりません。 (payment_type = 5 AND order_status = 1)。私は以下のモデル関数を追加しました。アクティブなレコードを使ってこれを行う方法を知りたい。誰かが本当に役に立つと思うアイデアがあれば。前もって感謝します。Codeigniterのアクティブなレコードでwhere_not_in()を2つの条件で使用する方法は?
public function getSalesByStore($from,$to,$status,$filter_stores,$offset, $amount, $limit = '')
{
$result = array();
$this->db->select("*,a.created AS order_created,store_name, users.name, a.id as orderid, a.payment_type AS payment");
$this->db->from("$this->table a");
$this->db->join('users', "a.customer_id = users.id");
$this->db->join('stores', "a.store_id = stores.id");
$this->db->order_by("a.id", "desc");
if(!empty($status))
{
if ($status == 6)
{
$this->db->where('order_status != 3');
}
elseif ($status == 1)
{
$this->db->where("a.payment_type != 5 AND order_status = $status");
}
else
{
$this->db->where('order_status', $status);
}
}
if(!empty($filter_stores))
{
$this->db->where('store_id in ('.$filter_stores.')');
}
if(!empty($from))
{
$this->db->where('date(a.created) >=', date($from));
}
if(!empty($to))
{
$this->db->where('date(a.created) <=', date($to));
}
if(!empty($amount))
{
if ($amount == 1)
{
$this->db->where("a.total_amount <=", 50);
}else if ($amount == 2)
{
$this->db->where("a.total_amount >=", 50);
}
}
$this->db->limit($limit, $offset);
$query = $this->db->get();
if ($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
$row->order_status = $this->get_status($row->order_status);
$result [] = $row;
}
}
return $result;
}
を探している答えかもしれませんが、HTTPSここを見て://www.codeigniterを。 $ this-> db-> where_in() 'と' $ this-> db-> where_not_in() 'には、com/userguide3/database/query_builder.html#探しているデータがあります。 – RanjanaLK