Events hasMany TicketTypes
TicketTypes belogsTo Events
Run Code Online (Sandbox Code Playgroud)
我正在尝试检索具有相关票证类型的所有事件:
$query= $this->Events
->find()
->select(['id', 'name'])
->autoFields(false)
->contain(['TicketTypes' => function($q) {
return $q->select(['TicketTypes.id', 'TicketTypes.name']); }])
;
Run Code Online (Sandbox Code Playgroud)
生成的 SQL 查询:
SELECT Events.id AS `Events__id`, Events.name AS `Events__name` FROM events Events
Run Code Online (Sandbox Code Playgroud)
但我的预期是:
SELECT Events.id AS `Events__id`, Events.name AS `Events__name`, TicketTypes.id AS `TicketTypes__id`, TicketTypes.name AS `TicketTypes__name` FROM events Events LEFT JOIN ticket_types TicketTypes ON Events.id = (TicketTypes.event_id)
Run Code Online (Sandbox Code Playgroud)
这是我的模型的配置方式:
class EventsTable extends Table
{
public function initialize(array $config)
{
$this->displayField('name');
$this->addAssociations([
'hasMany'=> ['TicketTypes']
]);
}
}
class TicketTypesTable …Run Code Online (Sandbox Code Playgroud)