mysql – CakePHP 3:如何从leftJoin自动获取字段?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – CakePHP 3:如何从leftJoin自动获取字段?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1710字,纯文字阅读大概需要3分钟。
内容图文
![mysql – CakePHP 3:如何从leftJoin自动获取字段?](/upload/InfoBanner/zyjiaocheng/909/3e4a487cae82470f8e143fe0f5f1afdc.jpg)
我有两张桌子.汽车和轮胎.轮胎可以(!)属于汽车.我的表看起来像:
轮胎:
id | car_id
-------------
1 | 17
2 | NULL
汽车:
id | name
-------------
17 | BMW
18 | Mercedes
根据我的理解,如果我想获得所有(!)轮胎(包括他们所属的车,如果可用的话)我无法创建内部连接(因此我不能使用包含).我需要使用左连接.但是那样我不知道如何自动选择桌面车上的所有字段.
查询我做:
$query = $this->Tires->find('all');
$query->leftJoin(
['Cars' => 'cars'],
['Cars.id = Tires.car_id']
);
// brings this SQL query
SELECT Tires.id AS `Tires__id`, Tires.car_id AS `Tires__car_id`
FROM tires Tires
LEFT JOIN cars Cars ON Cars.id = Tires.car_id
但是我如何自动从汽车中获取所有字段呢?
UPDATE
burzum实际上给了我解决方案,我很快就想详细说明,因为我认为蛋糕不能很好地解决…
为了实现我尝试做的事情,我需要添加以下代码:
$query
// you need to pass each model you want to get fields for
->select($this->Tires)
->select($this->Tires->Cars);
轮胎中的汽车看起来像这样:
...
'Cars' => [
'id' => '17',
'name' => 'BMW'
]
...
如果我做了一个包含,它看起来像这样:
...
'car' => object(App\Model\Entity\Car) {
'id' => (int) 17,
'name' => 'BMW',
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Cars'
}
...
所以,我可以解决这个问题.不过,我不明白不同的输出……
解决方法:
http://book.cakephp.org/3.0/en/orm/query-builder.html#selecting-all-fields-from-a-table
从以上URL获取的示例:
// Only all fields from the articles table including
// a calculated slug field.
$query = $articlesTable->find();
$query
->select(['slug' => $query->func()->concat(['title', '-', 'id'])])
->select($articlesTable); // Select all fields from articles
因此,在您的情况下,您需要将cars表的实例传递给select()调用.
内容总结
以上是互联网集市为您收集整理的mysql – CakePHP 3:如何从leftJoin自动获取字段?全部内容,希望文章能够帮你解决mysql – CakePHP 3:如何从leftJoin自动获取字段?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。