簡體   English   中英

如何在 codeigniter 框架上執行此查詢?

[英]How do I do this query on codeigniter framework?

我是 codeigniter 的新手,希望你能幫助我。

我在下面有一個 sql 查詢,它在 codeigniter 框架上看起來如何?

SELECT m.conversation_id, count(m.message_id)
FROM cms_conversations__messages AS m
LEFT JOIN cms_conversations__participants AS p ON p.conversation_id = m.conversation_id AND (p.last_read IS NULL OR m.added > p.last_read) AND m.user_id != 2
WHERE p.user_id = 2
GROUP BY p.user_id

先感謝您。

如果您確定您的查詢是正確的,那么這就是 codeigniter 的方法

$this->db->select('m.conversation_id, count(m.message_id) as message_count');
$this->db->from('cms_conversations__messages as m');
$this->db->join('cms_conversations__participants as p', 'p.conversation_id = m.conversation_id and (p.last_read IS NULL OR m.added > p.last_read) and m.user_id != 2', 'left');
$this->db->where('p.user_id', '2');
$this->db->group_by('p.user_id');
return $this->db->get()->result(); //  or you can also store it in a variable

有關更多信息,您可以查看文檔。 希望能幫助到你

作為使用 Query Builder 的替代方法,您可以使用支持綁定數據的query()進行常規查詢。 記錄在這里

在您的情況下,可以這樣做。

$sql = "SELECT m.conversation_id, count(m.message_id)
FROM cms_conversations__messages AS m
LEFT JOIN cms_conversations__participants AS p ON p.conversation_id = m.conversation_id
AND (p.last_read IS NULL OR m.added > p.last_read) 
AND m.user_id != ? WHERE p.user_id = ? GROUP BY p.user_id";

$id = 2;

$query = $this->db->query($sql, [$id, $id]);

//$query might be FALSE, always check for that before trying to get a dataset 
if($query !== FALSE) 
{
    return $query->result();
}

return FALSE;

數據綁定到$sql字符串中的兩個問號,該字符串在query()的第二個參數中作為數組(即[$id, $id] )提供。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM