2
このカスタムクエリを作成するにはcake php
メソッドを使用する必要がありますが、これはケーキでこのサブクエリを作成することが可能ですか?JoinステートメントのケーキPHP3サブクエリ
SELECT
m.chat_id AS chat_id,
m.message AS message,
m.created AS created,
g.title AS title,
u.id AS id,
u.name AS name,
g.id AS gig_id
FROM message m
NATURAL JOIN (
SELECT chat_id, MAX(id) AS id
FROM message
GROUP BY chat_id
) t
RIGHT JOIN chat c ON c.id = t.chat_id
INNER JOIN application a ON a.chat_id = m.chat_id
INNER JOIN gig g ON g.id = a.gig_id
INNER JOIN user u ON u.id = a.user_id
WHERE (g.status = 1)
ORDER BY m.created DESC
私のコードは、私はケーキのように
NATURAL JOIN (
SELECT chat_id, MAX(id) AS id
FROM message
GROUP BY chat_id
) t
RIGHT JOIN chat c ON c.id = t.chat_id
を実装知っておく必要があり
$this->loadModel('Message');
$dataField = $this->Message->find()
->hydrate(false)
->select(['Message.chat_id', 'Message.message', 'Message.created', 'u.id', 'u.name', 'g.id'])
->join([
'a' => [
'table' => 'application',
'type' => 'INNER',
'conditions' => 'a.chat_id = chat_id',
],
'g' => [
'table' => 'gig',
'type' => 'INNER',
'conditions' => 'g.id = a.gig_id',
],
'u' => [
'table' => 'user',
'type' => 'INNER',
'conditions' => 'u.id = a.user_id',
],
])
->where(['g.status' => 1])
->order(['Message.created' => 'DESC']);
以下のようなものです。ありがとう。
解決策をありがとう、それはパスを示していますが、私の問題のために 'Natural Join'を実装する必要があります。 Cake PHP 3で 'Natural Join'を実装する方法はありますか? 私はそれを以下のようにすることができますが、それは 'conditions'なしで可能ですか? ' 'T'=> [ 'テーブル'=> '(chat_id BYメッセージ群からIDとして、MAX(ID)をchat_id選択)' 'タイプ'=> '天然'、 ]、 ' – Miuranga