に参加し、私は左に参加してカウントを行う必要があります。これは私が必要とする質問です。リチウムカウントが動的に生成された要素を持つ大きなクエリの一部として
SELECT slug, name, count(client_tests.id) AS test_count
FROM clients
LEFT JOIN client_tests ON clients.id = client_tests.client_id
GROUP BY clients.id;
私が参加し、クエリを構築しようとしましたが、リチウムは(今のカウントを無視して)以下に示すように、(何の関係が定義されていない)関係の一部であることを参加を期待しているようです。
$join = new Query(array(
'source' => 'client_tests',
'model' => '\app\models\ClientTest',
'type' => 'LEFT',
'constraint' => array('Client.id' => 'ClientTest.client_id'),
));
$clients = Client::all(array(
'conditions' => $conditions,
'group' => 'Client.id',
'joins' => array($join)
));
これは関係関連のコードであるように思われ、Notice: Undefined index: ClientTest in /usr/local/www/oars/libraries/lithium/data/collection/RecordSet.php on line 340
もたらします。
クライアントとClientTestの間にhasMany
の関係を定義すると、私のために左結合を作成することができますが、Clientフィールドとカウントを取得する方法はありますか?
$clients = Client::all(array(
'fields' => array('slug', 'name', 'count(ClientTest.test_id) as test_count'),
'conditions' => $conditions,
'group' => 'Client.id',
'with' => 'ClientTest'
));
これは(!) Notice: Undefined index: count(ClientTest in /usr/local/www/oars/libraries/lithium/data/source/Database.php on line 650
になり、そのどちらかそれは不可能ですか、私は間違った構文を使用しています。
私は単にClient::connection()->read($sql)
と直接クエリを発行することができますが、クエリへの動的な要素があるとして、私はとにかくSQLを構築する必要があると思います。
動作するように、上記の方法を取得する方法はありますか、私は手動でSQLを構築して行くべきですか?
質問を書くことは問題ではないが、それをLithiumで動作させる最も良い方法は、特に質問した質問である。 – michaeltwofish
元のクエリはSQLとして意味がありません。グループには "select *"があります。正しいSQLクエリーで始めると、おそらく残りの部分が失われます。 –
私はあなたの助けに感謝し、私はSQLにうんざりでしたが、クエリは問題ではありません。私が最終的に何をしたいのかを説明するのは問題ですが、どこでも入力として使用されることはありません。 – michaeltwofish