1
我在Laravel 5.工作我的情况是下一个:我有一个表USERS和一张桌子PROFILES的有关系1:1。所以,我在模型用户一个名为轮廓像这样的方法:错误试图让非对象的属性在Laravel 5关系和范围
public function profile(){
return $this->belongsTo('App\models\Profile','profile_id');
}
另外我有一个方法scopeData在这里我要过滤哪些用户有identity_doc等于为数据:
public function scopeData($query,$data){
$profile=$this->profile;
$query->where($profile->identity_doc,$data);
}
在我使用范围功能在这条线的用户控制器
:
$students= Users::data($request->get('data'))->where('rol','=','Student')->get();
但是,当我运行它时,我有这个错误:试图获得非对象的属性 所以,为什么会发生?轮廓方法在其他功能工作正常,但没有在这里,我得到:
**array('query' => object(Builder), 'data' => 'example', 'profile' => null))**
好吧,我明白了,我虽然一样,但我不确定。谢谢你,兄弟!那么,是否存在处理这种情况的方法?我如何使用范围内的关系? –
好好加载可能是您解决方案的一部分:http://laravel.com/docs/5.0/eloquent#eager-loading。 例如Users :: with('profile') - 至少可以让你在某个地方。我并不完全清楚你想用 - > identity_doc部分实现的目标。你能解释更多吗? – Octo
当然,问题是我在视图中有一张桌子,并且在那里显示了用户个人资料的一些数据,如姓名,身份证件,电话号码等。但是我有一个_input text_,用户可以在其中引入一些价值并找到重合的寄存器,他可以找到护照或身份证号码。然后用那个_data_我试图过滤寄存器,并向用户显示结果 –