Tôi đang gặp vấn đề lạ trong Yii2 Tôi có một truy vấn có một tham gia với bảng agent và một (một đến nhiều) mối quan hệ của công việc với nhiệm vụ nó hoạt động tốt nhưng vấn đề là nó trả về mọi thứ trong chuỗi. Dưới đây là các truy vấn:Yii2 Active Record JSON response, gõ vấn đề casting
$query = self::find()
->select("job.*, agent.first_name,agent.last_name")
->leftJoin('agent', 'job.agent_id = agent.id')
->with('tasks')
->asArray()
->all();
và kết quả JSON mã hóa:
{
"success": true,
"data": [
{
"id": "10",
"customer_id": "1",
"job_type": "normal",
"created": "2016-06-22 10:19:25",
"first_name": "Shayan",
"last_name": "",
"tasks": [
{
"id": "10",
"job_id": "10",
"title": "bring food",
"instruction": null,
"created": "2016-06-22 10:19:25",
},
{
"id": "10",
"job_id": "10",
"title": "bring pizza",
"instruction": null,
"created": "2016-06-22 10:19:25",
},
]
}
nếu bạn nhận thấy các lĩnh vực như id, customer_id và job_id những tất cả đều nguyên nhưng nó trở lại như chuỗi. Nhưng nếu tôi loại bỏ -> asArray() từ truy vấn trên, nó trả về kiểu nhập hợp lệ nhưng vấn đề là nó bỏ qua các trường bảng quan hệ và leftJoin, nó chỉ trả về các trường bảng công việc ở đây là đáp ứng sau khi xóa -> asArray() từ truy vấn trên.
{
"success": true,
"data": [
{
"id": 10,
"customer_id": 1,
"name": null,
"job_type": "normal",
"created": "2016-06-22 10:19:25",
},
Nếu bạn nhận thấy ở trên phản ứng không có bảng tác nhân first_name, last_name và các dữ liệu quan hệ bị bỏ qua nhưng id và customer_id là số nguyên.
Có ai gặp phải vấn đề tương tự không? sự giúp đỡ của bạn sẽ được đánh giá cao. Cảm ơn trước.
Nên có auto loại đúc thay vì làm nó bằng tay , có cách nào khác không? –
Thật không may, tôi không thấy bất kỳ cách nào để thay đổi điều đó (hoặc ít nhất là tôi không biết điều đó) vì đó là [hành vi mặc định] (https://github.com/yiisoft/yii2/issues/9329#issuecomment- 128343292), theo nhà phát triển. Nhưng nó có thể là một lỗi hoặc một cái gì đó. Tôi cũng đã làm việc với tiền tố, nó không phải là khó để có được sử dụng với nó. –
Nhưng nếu bạn chỉ sử dụng tất cả() thay vì asArray() -> all() nó trả về kiểu dữ liệu hợp lệ nhưng vấn đề là nó chỉ trả về dữ liệu bảng đơn nó bỏ qua quan hệ và tham gia. –