Php 从另一个表中提取数据,同时从表中提取索引键

Php 从另一个表中提取数据,同时从表中提取索引键,php,mysql,cakephp,Php,Mysql,Cakephp,我有三个Mysql表: Brands ( brand names , brand Ids) cars ( car names,car ids, brand Ids) statuss ( car Ids, each car status). 我试图从品牌表中提取品牌名称,但我有汽车ID。我如何才能做到这一点,请参见下面的代码 控制器 View.ctp 应用程序::导入“控制器”、“汽车”; $carsCont=新的车辆控制器 应用程序::导入“控制器”、“品牌”; $brandCont=新品

我有三个Mysql表:

Brands ( brand names , brand Ids)

cars ( car names,car ids, brand Ids)

statuss ( car Ids, each car status).
我试图从品牌表中提取品牌名称,但我有汽车ID。我如何才能做到这一点,请参见下面的代码

控制器 View.ctp 应用程序::导入“控制器”、“汽车”; $carsCont=新的车辆控制器

应用程序::导入“控制器”、“品牌”; $brandCont=新品牌控制器

foreach$status作为$status

{

$car_info=$carsCont->get_car_info$status['status']['car_id']

$car_name = $car_info['car_name']; $car_id = $status['status']['car_id']; $brand_list = $brandCont -> get_brand_name($status['car']['brand_id']); <---- this is not working echo $brand_list['brand']['brand']; echo $car_name; }


CakePHP控制器并不像您所做的那样被设计或直接实例化

相反,您应该利用cakephp提供的关联

根据你所说的,你的状态属于汽车,属于品牌。在模型文件中设置这些关系,如本书中所述:

如果使用可包含的行为,则可以在状态控制器中执行类似的操作

$statuses = $this->Statuses->find('all', [
    'contain' => ['Cars' => 'Brands']
]);
你应该有你需要的所有数据

编辑:根据添加的内容,将汽车查询更改为

$cars = $this->car>find('all',array('limit' => 6, 'order' => array('car.id' => 'asc'), 'contain' => ['Brands']));

但是,确保汽车属于品牌,并且您已经附加了可包含的行为。

只需执行一个基本的子查询,连接也可以。例如,从brandtable中选择*,其中brandid位于从cartable中选择brandid,其中carid位于$carids中,以逗号分隔;不太确定它在cakephp项目中是如何格式化的。Dakota,您的代码会显示状态。我想让品牌出来,我知道汽车和状态。我增加了一点,这有帮助吗?达科他州,我需要$Brand_list=代码,因为我需要显示汽车的品牌,到目前为止,你向我展示了如何获得汽车和状态。此外,Cars表中没有品牌名称,只有品牌ID。我试图向您展示如何加载所需的相关数据,即品牌名称。我的第二个查询将为您提供所需的确切信息,$cars[0]['Brand']['name']
$cars = $this->car>find('all',array('limit' => 6, 'order' => array('car.id' => 'asc'), 'contain' => ['Brands']));