Php 从另一个表中提取数据,同时从表中提取索引键
我有三个Mysql表: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=新品
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']));