This repository was archived by the owner on Jan 4, 2020. It is now read-only.

Description
使用以下关联查询
HomeworkModel::withJoin([
'user' => ['name', 'id'],
'attachment' => ['name'],
], 'LEFT')
->withCount('file')
->selectOrFail();
生成了以下sql
SELECT
`homework_model`.`id`,
`homework_model`.`title`,
`homework_model`.`desc`,
`user`.`name` AS `user__name`,
`user`.`id` AS `user__id`,
`attachment`.`name` AS `attachment__name`,
(SELECT COUNT(*) AS tp_count
FROM `hw_file` `count_table`
WHERE ( `count_table`.`hid` = hw_homework.id ) LIMIT 1)
AS `file_count`
FROM `hw_homework` `homework_model`
LEFT JOIN `hw_user` `user` ON `homework_model`.`uid`=`user`.`id`
LEFT JOIN `hw_file` `attachment` ON `homework_model`.`attachment_id`=`attachment`.`id` LIMIT 100
报错 1054 - Unknown column 'hw_homework.id' in 'where clause'
原因 在from语句后已重命名hw_homework表为 homework_model
再子查询就会找不到hw_homework
尝试过更换withJoin()位置,没有生效。
使用with()代替withJoin(),但没办法使用查询多个需要关联的模型。
HomeworkModel::with([
'user' => ['name', 'id'],
'attachment' => ['name'],
])
->withCount('file')
->selectOrFail();
报错Too few arguments to function think\db\Query::name(), 0 passed and exactly 1 expected
检查sql语句,生成如下
SELECT *,(SELECT COUNT(*) AS tp_count FROM `hw_file` `count_table` WHERE ( `count_table`.`hid` =hw_homework.id ) LIMIT 1) AS `file_count` FROM `hw_homework`