我想問,我如何從一個表中獲取數據並在其他查找中使用此數據。Cakephp - 從無關聯的模型中獲取數據庫數據
例如,我有電影表。 我想得到最高評價的3部電影。結果應該返回3個ID。
現在,我想從不關聯的表中創建其他查詢,並將這3個ID作爲「條件」來查找其他表中的數據。
我不想使用關聯,因爲數據存儲在很多數據庫中,這是有問題的。
謝謝。
我想問,我如何從一個表中獲取數據並在其他查找中使用此數據。Cakephp - 從無關聯的模型中獲取數據庫數據
例如,我有電影表。 我想得到最高評價的3部電影。結果應該返回3個ID。
現在,我想從不關聯的表中創建其他查詢,並將這3個ID作爲「條件」來查找其他表中的數據。
我不想使用關聯,因爲數據存儲在很多數據庫中,這是有問題的。
謝謝。
一旦你得到了你的電影ID,您就可以使用in
從您的其他Model
篩選結果: -
$filmIds = ['32','55','75'];
$query = TableRegistry::get('Model')->find()
->where(function ($exp, $q) use ($filmIds) {
return $exp->in('film_id', $filmIds);
});
// WHERE film_id IN ('32','55','75')
檢查出advanced conditions的文檔部分。
如果你需要得到你的電影的ID爲正確的格式(即,在示例代碼所示),可以使用對結果Hash::extract()
從以前的查詢。
聽起來不錯,但是$ filmIds根據cakephp不確定。 – user2610146
@ user2610146對不起,忘了將'$ filmIds'傳遞給關閉。我已經更新了答案。 – drmonkeyninja
不要說對不起:)每一個幫助是有益的,謝謝。 你給了我一個提示,我做了這樣的: - > where(['id IN'=> $ filmIds]) 此致敬意。 – user2610146
如果你的CakePHP 3.x版本,你可以很直觀的方式
$films = TableRegistry::get('Films')->find('highestRated')
->select(['id'])
->limlt(3);
$query = $related->find()
->where(['id' => $films]);
子查詢被接受的任何地方可以使用查詢表達式中使用子查詢。例如,在select()和join()方法中。 http://book.cakephp.org/3.0/en/orm/query-builder.html#subqueries
您正在使用哪個版本? –
@ b0s3 Cakephp3 – user2610146
使用命名空間... –