Laravel使用雄辩的未定义的财产(Undefined property in Laravel using Eloquent)
使用雄辩时我有一个问题。
这是错误消息。
Undefined property: Illuminate\Database\Eloquent\Collection::$refunds这是我的模特。 受益人延伸Eloquent {
public function refunds(){ return $this->hasMany('Refund'); } } class Refund extends Model { protected $guarded = array(); public static $rules = array( 'request_id' => 'required', 'beneficiary_id' => 'required', 'concept' => 'required', 'date' => 'required | date_format:Y-m-d', 'amount' => 'required | min:-1 | numeric', 'deductible_amount' => 'required | numeric', 'max_applied' => 'required | numeric', 'yearly_balance' => 'required | numeric', 'payment_amount' => 'required | min:-1 | numeric', 'payment_date' => 'required | date_format:Y-m-d', ); public function beneficiary(){ return $this->belongsTo('Beneficiary','beneficiary_id'); } public function request(){ return $this->belongsTo('Models\Request','request_id'); } }这是我的模型。
class HomeController extends BaseController { public function getIndex(){ $requests = Requisition::with(array( 'refunds' => function($refundsQuery){ $refundsQuery->with(array( 'beneficiary' => function($beneficiaryQuery){ $beneficiaryQuery->with(array('beneficiary', 'holder')); } )); }, 'policy' => function($policyQuery){ $words=explode(' ',trim(Input::get('policy_code'))); $policyQuery->where('code','LIKE','%'.$words[0].'%'); for($i=1;$i<count($words);$i++){ $policyQuery->orWhere('code','LIKE','%'.$words[$i].'%'); } }, 'refunds' => function($refundsQuery){ $refundsQuery->with(array( 'beneficiary' => function($beneficiaryQuery){ $beneficiaryQuery->with(array('beneficiary','rut')); } )); } )); if(Input::has('request_number')){ $words=explode(' ',trim(Input::get('request_number'))); $requests->where('number','LIKE','%'.$words[0].'%'); for($i=1;$i<count($words);$i++){ $requests->orWhere('number','LIKE','%'.$words[$i].'%'); } } if(Input::has('policy_code')){ $requests->whereHas('policy', function($policyQuery){ $words=explode(' ',trim(Input::get('policy_code'))); $policyQuery->where('code','LIKE','%'.$words[0].'%'); for($i=1;$i<count($words);$i++){ $policyQuery->orWhere('code','LIKE','%'.$words[$i].'%'); } }); } if(Input::has('rut')){ $person = Person::where('rut', Input::get('rut'))->get(); $beneficiary = Beneficiary::where('rut',Input::get('rut'))->get(); $refunds = $beneficiary->refunds; //Error } $requests = $requests->paginate(10); return View::make('home.index',array( 'requests'=>$requests, 'policy_code' => Input::get('policy_code'), 'request_number' => Input::get('request_number'), 'rut' => Input::get('rut') ));在这一行发生错误$ refunds = $ beneficiary-> refunds;
任何想法?
I have a problem when use Eloquent.
This is the error message.
Undefined property: Illuminate\Database\Eloquent\Collection::$refundsThis is My model. class Beneficiary extends Eloquent {
public function refunds(){ return $this->hasMany('Refund'); } } class Refund extends Model { protected $guarded = array(); public static $rules = array( 'request_id' => 'required', 'beneficiary_id' => 'required', 'concept' => 'required', 'date' => 'required | date_format:Y-m-d', 'amount' => 'required | min:-1 | numeric', 'deductible_amount' => 'required | numeric', 'max_applied' => 'required | numeric', 'yearly_balance' => 'required | numeric', 'payment_amount' => 'required | min:-1 | numeric', 'payment_date' => 'required | date_format:Y-m-d', ); public function beneficiary(){ return $this->belongsTo('Beneficiary','beneficiary_id'); } public function request(){ return $this->belongsTo('Models\Request','request_id'); } }And this is my Model.
class HomeController extends BaseController { public function getIndex(){ $requests = Requisition::with(array( 'refunds' => function($refundsQuery){ $refundsQuery->with(array( 'beneficiary' => function($beneficiaryQuery){ $beneficiaryQuery->with(array('beneficiary', 'holder')); } )); }, 'policy' => function($policyQuery){ $words=explode(' ',trim(Input::get('policy_code'))); $policyQuery->where('code','LIKE','%'.$words[0].'%'); for($i=1;$i<count($words);$i++){ $policyQuery->orWhere('code','LIKE','%'.$words[$i].'%'); } }, 'refunds' => function($refundsQuery){ $refundsQuery->with(array( 'beneficiary' => function($beneficiaryQuery){ $beneficiaryQuery->with(array('beneficiary','rut')); } )); } )); if(Input::has('request_number')){ $words=explode(' ',trim(Input::get('request_number'))); $requests->where('number','LIKE','%'.$words[0].'%'); for($i=1;$i<count($words);$i++){ $requests->orWhere('number','LIKE','%'.$words[$i].'%'); } } if(Input::has('policy_code')){ $requests->whereHas('policy', function($policyQuery){ $words=explode(' ',trim(Input::get('policy_code'))); $policyQuery->where('code','LIKE','%'.$words[0].'%'); for($i=1;$i<count($words);$i++){ $policyQuery->orWhere('code','LIKE','%'.$words[$i].'%'); } }); } if(Input::has('rut')){ $person = Person::where('rut', Input::get('rut'))->get(); $beneficiary = Beneficiary::where('rut',Input::get('rut'))->get(); $refunds = $beneficiary->refunds; //Error } $requests = $requests->paginate(10); return View::make('home.index',array( 'requests'=>$requests, 'policy_code' => Input::get('policy_code'), 'request_number' => Input::get('request_number'), 'rut' => Input::get('rut') ));In this line occurs the error $refunds = $beneficiary->refunds;
Any idea?
最满意答案
当你这样做
$beneficiary = Beneficiary::where('rut',Input::get('rut'))->get();包含模型集合,而不是模型,因此您必须:
$beneficiaries = Beneficiary::where('rut',Input::get('rut'))->get(); foreach($beneficiaries as $beneficiary) { echo $beneficiary->refunds; }要么
$beneficiary = Beneficiary::where('rut',Input::get('rut'))->first();When you do
$beneficiary = Beneficiary::where('rut',Input::get('rut'))->get();Contains a Collection of models, not a Model, so you have to:
$beneficiaries = Beneficiary::where('rut',Input::get('rut'))->get(); foreach($beneficiaries as $beneficiary) { echo $beneficiary->refunds; }Or
$beneficiary = Beneficiary::where('rut',Input::get('rut'))->first();更多推荐
发布评论