我有以下情况。
我有一个表“ drivers_events”,其中存储了为某个事件预订的驱动程序。
现在我想做以下

SELECT
    Driver.id,
    Driver.name
FROM
    drivers AS Driver
    INNER JOIN
        drivers_events AS Listing
        ON Driver.id = Listing.driver_id
WHERE
    Listing.event_id = 83
ORDER BY
    Driver.name ASC;


如果我在phpmyadmin中将其作为SQL查询运行,则它可以正常运行,并且可以从“驱动程序”表中获取正确的ID和名称。

当我像这样在控制器中执行此操作时

$drivers = $this->Jobs->query("
    SELECT
        Driver.id,
        Driver.name
    FROM
        drivers AS Driver
        INNER JOIN
            drivers_events AS Event
            ON Driver.id = Event.driver_id
    WHERE
        Event.event_id = $activeevent
    ORDER BY
        Driver.name ASC
");


然后我得到了过去创建的工作的完整数组。

我做错了什么 ?

如果有人可以帮助我,那将是很棒的。

提前致谢

最佳答案

我尝试了很多。我得出的结论是,我可以读出分配给事件的驱动程序。

在控制器中看起来像这样

 $drivers = $this->Jobs->drivers_events->find('list',
      [
      'conditions' =>
      [
           'drivers_events.event_id' => $this->request->session()->read('Event.active')
      ],
      'keyField' => 'driver_id',
      'valueField' => 'driver_id'
      ]
 );


在模型中

 $this->belongsTo('drivers_events', [
      'foreignKey' => 'event_id',
 ]);


因此,现在我可以找到合适的驱动程序来从事某项活动中的驾驶工作。
但是,如何从“ Drivers”表中获取驱动程序的名称而不是ID?

寻求帮助

关于mysql - Cakephp 3.5内部加入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48170155/

10-09 00:33