0
我想在CakePHP中3
SELECT
medicine_records.*,
medicines.name AS medicine_name,
medicines.subname AS `medicine_subname`
FROM medicine_records
INNER JOIN medicines ON medicines.id = medicine_records.medicine_id
控制器運行此查詢:
$medicines = $this->MedicineRecords->find()->contain(['Medicines'])->all();
CakePHP的查詢日誌:
2017-02-14 09:58:47 Debug: duration=1 rows=1 SELECT MedicineRecords.id AS `MedicineRecords__id`, MedicineRecords.user_id AS `MedicineRecords__user_id`, MedicineRecords.medicine_id AS `MedicineRecords__medicine_id`, MedicineRecords.times_pre_day AS `MedicineRecords__times_pre_day`, MedicineRecords.created AS `MedicineRecords__created`, MedicineRecords.modified AS `MedicineRecords__modified`, Medicines.id AS `Medicines__id`, Medicines.name AS `Medicines__name`, Medicines.subname AS `Medicines__subname`, Medicines.type AS `Medicines__type`, Medicines.created AS `Medicines__created`, Medicines.modified AS `Medicines__modified` FROM medicine_records MedicineRecords INNER JOIN medicines Medicines ON Medicines.id = (MedicineRecords.medicine_id)
結果數據:
"data": [
{
"id": 1,
"user_id": 1,
"medicine_id": 3,
"times_pre_day": 2,
"created": "2017-02-14T04:55:48+00:00",
"modified": "2017-02-14T04:55:48+00:00",
"medicine": {
"id": 3,
"name": "Name",
"subname": "Subname",
"type": 1,
"created": "2017-02-13T09:38:48+00:00",
"modified": "2017-02-13T09:38:48+00:00"
}
}
]
此結果在兒童級別有藥物。我想在最頂層的所有數據是這樣的:
"data": [
{
"id": 1,
"user_id": 1,
"medicine_id": 3,
"times_pre_day": 2,
"medicine_name": "Name",
"medicine_subname": "Subname",
"created": "2017-02-14T04:55:48+00:00",
"modified": "2017-02-14T04:55:48+00:00",
}
]
我已經嘗試使用public $recursive = -1;
但我認爲它不工作CakePHP的3
更新
刪除WHERE medicine_records.id = 1
對不起,我的錯誤。在查詢中沒有'WHERE medicine_records.id = 1'。所以結果可以有很多記錄。 (*)*(*)* *對不起* –
你可以發佈更新後的結果(如調試() $藥物);),如果不是這樣做的話。 –
[**選擇字段**](https://book.cakephp.org/3.0/en/orm/query-builder.html#selecting-data)可能比直接重新格式化更直接。 – ndm