У меня есть две таблицы, первая таблица называется payments
см. Ниже
Я хочу получить самую последнюю payment_id
(имеется в виду последний платеж) каждого product_id
, см. выделенные строки, в этом случае я хочу получить product_id
из 10, 9, 8, 3 и 6, но из самого последнего payment_id
, который составляет 69, 68, 59, 58 и 55.
После того, как я получил все это, я хочу обновить статус в другой таблице с именем list_data
, см. Справа:
Эта таблица также имеет product_id
тот же идентификатор продукта из таблицы payments
.
В целом моя цель - обновлять статус каждого product_id
, если были произведены платежи.
Ниже мой контроллер:
$data["exp_date"] = $this->Superadmin_model_CMS->get_all_detail_needed_again();
$this->load->helper('date');
foreach ($data["exp_date"] as $value) {
$exp_date = $value->payment_endDate;
$todays_date = date("Y-m-d");
$today = strtotime($todays_date);
$expiration_date = strtotime($exp_date);
if ($expiration_date <= $today && $value->ad_status === 'active') {
// if ($value->ad_status === 'active') {
$update_status = 'inactive';
$data = array('ad_status' => $update_status
);
$this->Listing_model->update_ads_status($value->list_data_id, $data);
// }
}
}
Ниже моя модель
public function get_all_detail_needed_again() {
$this->db->select('py.payment_id,py.user_id,py.product_id,py.product_name,py.txn_id,py.payment_gross,py.payer_email,py.payment_status,py.payment_date,py.payment_endDate,ld.ad_status,ld.list_data_id');
$this->db->from('payments py');
$this->db->join('list_data ld','py.product_id = ld.list_data_id');
$this->db->order_by('py.payment_id','desc');
$this->db->limit(1); //If I don't put limit the code doesn't get the latest payment_id but if write limit 1, it only get 1 row of product_id and payment_id
$query = $this->db->get();
if($query->num_rows() > 0){
return $query->result();
} else{
return array();
}
}
public function update_ads_status($id, $data) {
$this->db->where('list_data_id', $id);
$this->db->update('list_data', $data);
return true;
}
В моей модели, если я не пишу предел 1, код не получает последнюю версиюpayment_id
но если записать предел 1, он получит только 1 строку product_id
и payment_id
Кто-нибудь может мне помочь? Спасибо