gpt4 book ai didi

php - 如何将 "WHERE NOT IN"查询实现到 Codeigniter 事件记录中?

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:31 25 4
gpt4 key购买 nike

我有一个 MySQL 查询是这样的:

SELECT * FROM tbl_post WHERE tbl_post.post_id NOT IN 
(SELECT tbl_readsave.post_id FROM tbl_readsave)

我想把它转换成Codeigniter Active记录,所以我用了下面的代码段:

    $this->db->select('tbl_readsave.post_id');
$queryReadSave = $this->db->get('readsave');
$this->db->where_not_in('post_id', $queryReadSave->result_array());
$queryNewPost = $this->db->get('readsave');
if($queryNewPost->num_rows()>0)
{
return $queryNewPost->result_array();
}
else
return false;

但是,代码抛出一个错误,如下所示:-

Error Number: 1054

Unknown column 'Array' in 'where clause'

SELECT * FROM (`tbl_readsave`) WHERE `post_id` NOT IN (Array)

Filename: /var/www/html/teamF/tharjumal/models/webservice_model.php

Line Number: 28

如何将上述查询转换为 Codeigniter Active Records 格式?

最佳答案

$queryReadSave->result_array() 返回数组的数组。您不能在 where_not_in 中使用它。

您需要循环并创建一个您(不)想要的 ID 的平面数组。

$this->db->select('post_id');
$queryReadSave = $this->db->get('readsave');

$postIDs = $queryReadSave->result_array();

$this->db->where_not_in('post_id', array_column($postIDs, 'post_id'));
$queryNewPost = $this->db->get('post');

array_column()仅存在于 PHP 5.5+ 中。如果您使用的是较低版本,则需要执行以下操作:

$this->db->select('post_id');
$queryReadSave = $this->db->get('readsave');

$postIDs = array_map(function($a){
return $a['post_id'];
}, $queryReadSave->result_array());

$this->db->where_not_in('post_id', $postIDs);
$queryNewPost = $this->db->get('post');

附言您的第二个表称为 post,对吗?您需要更新查询以使用正确的表。

更新:您的原始查询使用了 CodeIgniter 本身不支持的子查询。如果您想将这一切作为一个查询来尝试,您可以使用我创建的子查询库 ( https://github.com/NTICompass/CodeIgniter-Subqueries)。

$this->db->select('*');
$this->db->from('post');

$sub = $this->subquery->start_subquery('where_in');
$sub->select('post_id')->from('readsave');

$this->subquery->end_subquery('post_id', FALSE);
$queryNewPost = $this->db->get();

关于php - 如何将 "WHERE NOT IN"查询实现到 Codeigniter 事件记录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37006379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com