【发布时间】:2014-05-23 05:59:04
【问题描述】:
我无法使用带有内部连接的 yii 框架从数据库中选择值。我的控制器是 sitecontroller.php,视图文件是 adavance_search_result.php。我收到错误“
属性“Job.location”未定义。
C:\wamp\www\yii\framework\db\ar\CActiveRecord.php(145) "
工作表字段
id int (100)
user_id int(100)
posted_by varchar(100)
title varchar(100)
key_skills varchar(200)
no_vacancy int(11)
category_id int(11)
experience int(11)
contact_email varchar(100)
company_name varchar(100)
salary double
location_id int int(100)
位置 1.id 2.标题
我的控制器代码是
public function actionadvance_search_result() {
$title = $_GET['title'];
$experience = $_GET['experience'];
$location = $_GET['location'];
$category = $_GET['category'];
$salary_min = $_GET['salary_min'];
$salary_max = $_GET['salary_max'];
$criteria = new CDbCriteria();
$criteria->select = 't.title, location.title, t.key_skills, t.description, t.no_vacancy, t.experience, t.company_name, t.salary';
$criteria->join = 'INNER JOIN location ON t.location_id = location.id';
if($experience != "") {
$criteria->addCondition("(title like '%$title%' or key_skills like '%$title%') and (experience like '%$experience%')");
}
if($location != "") {
$criteria->addCondition("location_id like '%$location%'");
}
if($category != "") {
$criteria->addCondition("category_id like '%$category%'");
}
if($salary_min != "" && $salary_max != "") {
$criteria->addCondition("salary >= '$salary_min' and salary <= '$salary_max'");
}
$count = Job::model()->count($criteria);
$pages = new CPagination($count);
$pages->pageSize = 2;
$pages->applyLimit($criteria);
$model = Job::model()->findAll($criteria);
$number_rec = count($model);
if($number_rec <= 0) {
$this->render('search_result1', array('model' => $model));
}
else {
$this->render('advance_search_result', array(
'model' => $model,
'pages' => $pages
));
}
}
我的查看页面是
<div>
<div>
<h1>Search Results</h1>
<ul style="list-style:none; ">
<?php
foreach($model as $models) {
$job_id = $models->id;
?>
<li>
<p><?php echo CHtml::link($models->title); ?></p>
<p><?php echo CHtml::link($models->location->title); ?></p>
<p><?php echo $models->company_name; ?></p>
<p><?php echo $models->description; ?></p>
<p>Keyskill:<?php echo $models->key_skills; ?><p>
</li>
</br>
<?php
}
?>
</ul>
<p><?php $this->widget('CLinkPager', array(
'pages' => $pages,
)) ?></p>
</div>
</div>
模型是job.php
代码
<?php
class Job extends CActiveRecord
{
public $title;
public static function model($className=__CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'jobs';
}
public function rules()
{
return array(
array('title,key_skills,description,no_vacancy,
category_id,experience,contact_email,company_name,company_name,salary,location_id','required'),
);
}
public function relations()
{
return array(
'location' => array(self::HAS_MANY, 'location', 'id'),
);
}
public function attributeLabels()
{
return array(
'user_id' => 'User_ID',
'title' => 'Title',
'key_skills' => 'Key_skills',
);
}
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('title',$this->title);
$criteria->compare('key_skills',$this->key_skills,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
}
?>
模型位置.php
<?php
class Location extends CActiveRecord
{
public $title;
public $Ltitle;
public static function model($className=__CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'location';
}
public function rules()
{
return array(
array('title,description','required'),
);
}
public function relations(){
return array(
'job' => array(self::BELONGS_TO, 'Job', 'id'),
);
}
}
?>
有人帮帮我吗?
【问题讨论】:
-
作业表有哪些列?
-
我已经添加了工作表字段,更新了上面的代码,请检查一下。
-
请检查更新的代码,我有两个表作业和位置,两个表都有字段名称'title'。所以我使用了别名。
-
你有一个使用
(title like '%$title%'的 addCondition -- 那不应该是(ltitle like '%$title%'吗? -
在工作表中的'title'字段查询中使用了倾斜,位置是在工作表中使用'location_id'搜索。我想要工作表中的'title'和位置表中的'title'。跨度>