我想在不动产表和不动产类型表之间进行内部联接。我创建了一个编辑页面,但是我想按cusId显示客户信息。我可以从遗产表中提取数据。但是不动产类型在不动产表中。我在不动产类型表中持有不动产类型名称。当我从Estate表中调用estateType时,仅显示number(1,2,3)但我想从estatetype表中显示其名称。我该怎么办?
我想通过房地产类型表中的ID显示客户房地产信息。但是我不能这样做。
控制器:
$viewData = new stdClass();
$this->load->model('join_model');
$viewData->estateList = $this->join_model->estatetypes();
$viewData->customers = $this->db->where("cusId", $cusId)->get("customer")->row();
$viewData->property = $this->db->where("cusId", $cusId)->get("estate")->row();
$viewData->estype = $this->db->get("estatetype")->result();
$viewData->heating = $this->db->get("heating")->result();
$viewData->cities = $this->db->get("city")->result();
$this->load->view('property_edit',$viewData);
型号:
<?php
class Join_model extends CI_Model {
public function __construct()
{
parent::__construct();
}
public function estatetypes()
{
$this->db->select('estate.CusId,estate.estateType,estatetype.estateTypeId,estatetype.estateTypeAr,estatetype.estateTypeEng');
$this->db->from('estate');
$this->db->join('estatetype', 'estate.estateType = estatetype.estateTypeEng');
$results = $this->db->get()->row();
return $results;
//return $this->db->get_where('users', array('userId' => $id), 1);
}
}
我想显示何时从视图中的遗产表中添加estateType,显示来自estateType的estataTypeEn。为此,我进行了内部联接,但是当我将其添加到视图和控制器中时。什么也没有。我该怎么做呢?
查看:
<!-- Basic select -->
<div class="form-group">
<label class="control-label col-lg-3">Estate Type <span class="text-danger">*</span></label>
<div class="col-lg-9">
<select name="estateType" class="form-control">
<option value="<?php echo $property->estateType; ?>" readonly><?php echo $estateList->estateType; ?></option>
<?php
foreach($estype as $etype){ ?>
<option value="<?php echo $etype->estateTypeId; ?>"><?php echo $etype->estateTypeEng; ?></option>
<?php }?>
</select>
</div>
</div>
estatetype表(类型名称在此处)
CREATE TABLE `estatetype` (
`estateTypeId` int(11) NOT NULL AUTO_INCREMENT,
`estateTypeNameEn` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`estateTypeNameAr` varchar(255) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`payTypeId`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
房地产表
CREATE TABLE `estate` (
`estateId` int(11) NOT NULL AUTO_INCREMENT,
`CusId` int(11) DEFAULT NULL,
`estateType` int(11) DEFAULT NULL COMMENT '',
`estateCentare` varchar(6) COLLATE utf8_bin DEFAULT NULL,
`estateRoom` varchar(2) COLLATE utf8_bin DEFAULT NULL COMMENT '',
`estateSalon` varchar(2) COLLATE utf8_bin DEFAULT NULL COMMENT '',
`estateBathroom` varchar(2) COLLATE utf8_bin DEFAULT NULL COMMENT '',
`estateHeating` int(11) DEFAULT NULL COMMENT '',
`estateCity` int(11) DEFAULT NULL COMMENT '',
`estateAddress` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`estateCoord` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`estateGarden` tinyint(1) DEFAULT NULL COMMENT '',
`estateBalcony` tinyint(1) DEFAULT NULL COMMENT '',
`estatePackage` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`estatePackageDate` datetime DEFAULT NULL,
`estatePackageUser` int(11) DEFAULT NULL,
`estateCreateDate` datetime DEFAULT NULL,
`estateCreateUser` int(11) DEFAULT NULL,
`estateEditDate` datetime DEFAULT NULL,
`estateEditUser` int(11) DEFAULT NULL,
`estateDue` decimal(5,0) DEFAULT NULL,
`estateImg` varchar(255) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`estateId`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
答案 0 :(得分:1)
您无需使用Join
,您可以创建custom_helper.php
CodeIgniter助手是一个具有多种功能的PHP文件。 这不是课程
创建一个文件,并将以下代码放入其中。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
if ( ! function_exists('get_name'))
{
function get_name($id,$value)
{
$CI=& get_instance();
$number_data = $CI->db->get_where('estatetype', array('estateTypeId' => $id))->num_rows();
if($number_data > 0){
$data = $CI->db->get_where('estatetype', array('estateTypeId' => $id))->row()->$value;
}
else{
$data = translate('Not_Found');
}
return $data;
}
}
将其保存到 application / helpers / 。
将此内容加载到您的控制器
$this->load->helper('custom_helper');
如果您在许多位置使用此帮助器,则可以通过将其添加到自动加载配置文件(即<your-web-app>\application\config\autoload.php
)中使其自动加载。
$autoload['helper'] = array('custom_helper');
在您看来,您可以像这样调用此函数。
<select name="estateType" class="form-control">
<?php
$estype = $this->db->get("estate")->result_array();
foreach($estype as $row){ ?>
<option value="<?php echo $row['estateType']; ?>"><?php echo get_name($row['estateType'],'estateTypeNameEn'); ?></option>
<?php }?>
</select>
如果要从表中获取其他表或其他列,可以更改此函数。
function get_name($table,$field,$equal,$value)
{
$CI=& get_instance();
$number_data = $CI->db->get_where($table, array($field => $equal))->num_rows();
if($number_data > 0){
$data = $CI->db->get_where($table, array($field => $equal))->row()->$value;
}
else{
$data = translate('Not_Found');
}
return $data;
}
在视图中,您可以添加它。
<select name="estateType" class="form-control">
<?php
$estype = $this->db->get("estate")->result_array();
foreach($estype as $row){ ?>
<option value="<?php echo $row['estateType']; ?>"><?php echo get_name('estatetype','estateTypeId',$row['estateType'],'estateTypeNameEn'); ?></option>
<?php }?>
</select>