gpt4 book ai didi

php - 如何在输出中仅包含一次标题的情况下对连接表进行排序

转载 作者:行者123 更新时间:2023-11-29 00:28:23 25 4
gpt4 key购买 nike

我是 codeigniter 框架的新手,正在学习如何使用 MVC 模式。我正在尝试实现输出,但这对我来说并没有真正起作用,请允许我用代码说明我的问题:

我的数据库中有 3 个表

CREATE TABLE carBrand
(
pk_brandID int,
brand varchar(255)
);

CREATE TABLE carModel
(
pk_modelID int,
model varchar(255)
)

CREATE TABLE brandModel
(
pk_brandmodelID int,
project varchar(255),
carOWner varchar(255),
buildyear varchar(255),
fk_brandID int,
fk_modelID int
)

目前我在我的模型中使用这样的连接来连接表

function getCarbyOwner(){
$this->db->join('carBrand', 'carBrand.pk_brandID = brandModel.fk_brandID');
$this->db->join('carModel', 'carModel.pk_modelID = brandModel.fk_modelID');
$this->db->where('carOwner', $$this->session->userdata('logged_in_owner'));
$q = $this->db->get('brandModel');
return $q->result();
}

在我看来输出这个 - 取决于数据库中第一个记录

品牌 1

*model

brand 1
*model

brand 3
*model

brand 2
*model

brand 3
*model

但是我在输出数据时遇到了困难我基本上想要的是以下输出

Brand 1
*model
*model
*model

Brand 2
*model
*model
*model

Brand 3
*model
*model
*model

这是我的 Controller

function index(){
if($car= $this->car_model->getCarbyOwner()){
$data['car'] = $car;
$this->load->view('carview', $car);
}
}

View :

if(isset($car)){
foreach($car as $r){
$r->brand;
$r->model
}
}

我怎样才能达到我想要的结果?

编辑

我已经实现了一些建议,但现在并没有输出所有内容。

我在表 brandModel 中的记录例如是这样的:

pk_brandmodelID | project | carowner | buildyear | fk_brandID | fk_modelID
1 | proj A | frank | 2012 | 1 | 6
2 | proj B | Jef | 2002 | 2 | 1
3 | proj C | jeffrey | 2013 | 1 | 5
4 | proj X | frank | 2010 | 2 | 2
5 | proj Y | george | 2008 | 1 | 3

假设品牌 1 = 奥迪,品牌 2 是梅赛德斯想要的输出是这样的

Audi
model fk_id 6
model fk_id 5
model fk_id 3

Mercedes
model fk_id 1

model fk_id 2

但现在我只得到

Audi
model fk_id 6

Mercedes
model fk_id 1

我使用了以下代码:

型号

function getCarbyOwner(){
$this->db->join('carBrand', 'carBrand.pk_brandID = brandModel.fk_brandID');
$this->db->join('carModel', 'carModel.pk_modelID = brandModel.fk_modelID');
$this->db->where('carOwner', 'xxx');
$q = $this->db->get('brandModel');
if($result = $q->result())
{
foreach($result as $key => $value)
{
$d[$value->pk_brandID]['brand'] = $value->brand;
$d[$value->pk_brandID]['data'][$value->pk_modelID] = $value;
}
return $d;
}
else
return false;
}

查看

if(isset($x)){
foreach($x as $r)
{
echo $r['brand']."<br />";
foreach($r['data'] as $v)
{
echo $v->model."<br />";
}
echo "<br />";
}
}

最佳答案

将新方法制作成CAR模态

function getCarModels(){
$modalData = array();
$this->db->join('carBrand', 'carBrand.pk_brandID = brandModel.fk_brandID');
$this->db->where('carOwner', $$this->session->userdata('logged_in_owner'));
$q = $this->db->get('brandModel');

if($result = $query->result())
{
foreach($result as $key => $value)
{
$modalData[$value-pk_brandID[] = $value;
}
}
return $brandData;
}

进入 Controller 文件

$data['car']  = $this-car_modelgetCarModels();

进入查看文件

 foreach($car as $r)
{
echo $r[0]->brand."<br />";
foreach($r as $v)
{
echo $v->model."<br />";
}
echo "<br />";
}

关于php - 如何在输出中仅包含一次标题的情况下对连接表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17842976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com