我有两张桌子。汽车和轮胎。轮胎可以属于汽车。我的表看起来像:
轮胎:
id | car_id
-------------
1 | 17
2 | NULL
Run Code Online (Sandbox Code Playgroud)
汽车:
id | name
-------------
17 | BMW
18 | Mercedes
Run Code Online (Sandbox Code Playgroud)
根据我的理解,如果我想获得所有(!)轮胎(包括它们所属的汽车,如果有的话),则无法创建内部联接(因此,我不能使用Contain)。我需要使用左联接。但是那样我不知道如何自动选择台式车上的所有字段。
查询我:
$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
Run Code Online (Sandbox Code Playgroud)
但是,如何自动从汽车中获取所有字段呢?
UPDATE burzum实际上给了我迅速想详细说明的解决方案,因为我认为蛋糕不能很好地解决它。
为了实现我试图做的事情,我需要添加以下代码:
$query
// you need to pass each model you want to get fields for
->select($this->Tires)
->select($this->Tires->Cars);
Run Code Online (Sandbox Code Playgroud)
轮胎中的汽车如下所示: …
我有以下情况:作品有一个Image属于ImageGroup.
如果我这样做:
$works = $this->Work->find('all', array(
'contain' => array(
'PreviewImage' => array(
'fields' => array('PreviewImage.id', 'PreviewImage.filename', 'PreviewImage.alt'),
'ImageGroup' => array(
'fields' => array('ImageGroup.id')
)
)
)
));
Run Code Online (Sandbox Code Playgroud)
我会得到这个:
array(
(int) 0 => array(
'Work' => array(
'id' => '1',
'title_us' => 'Work Title',
'title_de' => 'Arbeit Titel',
'alias' => 'work-title',
'pdf_id' => '1',
'date' => '2013-10-08 10:36:00',
'title_graphic_us_id' => '1',
'title_graphic_de_id' => '2',
'body_us' => 'English Content',
'body_de' => 'Deutscher Inhalt',
'preview_image_id' => '3',
'preview_us' => 'English Preview Text',
'preview_de' …Run Code Online (Sandbox Code Playgroud) 我有一小段代码,我无法使其工作.
$dict = array('401003' => "Test")
function getID ($tempid) {
$id = '<span title="'.$tempid.'">'.$dict[$tempid].'</span>';
return $id;
}
echo getID('401003');
echo $dict['401003'];
Run Code Online (Sandbox Code Playgroud)
我希望两次得到'测试',但只有第二个回声让我回到'测试'.函数中的$ dict [$ tempid]似乎有些问题
你能帮帮我吗?
cakephp ×2
php ×2
arrays ×1
cakephp-2.0 ×1
cakephp-3.0 ×1
containable ×1
echo ×1
left-join ×1
mysql ×1
return ×1