【发布时间】:2014-05-26 10:12:07
【问题描述】:
我无法使用带有内部连接的 yii 框架从数据库中选择值。我的控制器是 sitecontroller.php,视图文件是 adavance_search_result.php。我收到错误“
试图获取非对象的属性
C:\wamp\www\jobsite_orginal\protected\modules\jobseeker\views\site\advance_search_result.php(11)
工作表字段
id int (100)
user_id int(100)
Posted_by varchar(100)
标题 varchar(100)
key_skills varchar(200)
no_vacancy int(11)
category_id int(11)
体验 int(11)
联系人电子邮件 varchar(100)
公司名称 varchar(100)
双倍工资
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 = 'jobs.title, location.title,
jobs.key_skills, jobs.description,
jobs.no_vacancy, jobs.experience, jobs.company_name,
jobs.salary';
$criteria->join = 'INNER JOIN location ON jobs.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));
}
}
查看页面-advanced_search_result.php
<div >
<h1>Search Results</h1>
<ul style="list-style:none; ">
<?php
foreach($model as $models)
{
$job_id=$models->id;
?>
<li><p><?php //echo $models->title; ?>
<?php echo CHtml::link($models->title,
array('site/advance_search_detail',
'job_id'=>$job_id,'status'=>0));
?></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>
模型作业.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'),
);
}
}
?>
【问题讨论】: