脚本宝典收集整理的这篇文章主要介绍了php – 对象存在但是试图获取非对象的属性,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我写这个:
$test = $model->relation->PRoPErty;
我收到了错误.
如果我写这个:
echo / var_dump($model->relation->property);
然后它打印没有问题.
我真的不知道发生了什么,任何帮助都会非常感激.
Ps:对不起,如果我写的文字错了,这是我第一次在stackoverflow问问题:)
哦,我确实已经阅读了所有类似的问题
这是Stay.PHP模型:
namespace App\models; use Illuminate\Database\Eloquent\Model; class Stay extends CustomModel { protected $table = 'stay'; protected $fillable = array('reservation_terms_convention_id','reservation_id','period_id','total_price','price_ht','occupant_id','prestation_fixe_id','pax','checkin','checkout'); protected $Guarded = array('id'); static public $mailTemplatingWhITelist = ['total_price']; public static $rules = [ 'reservation_terms_convention_id' => 'required|exists:reservation_terms_convention,id','period_id' => 'required|exists:period,'payeur_id' => 'required' ]; public function payment_due_date() { return $this->belongsTo('App\models\PaymentDueDate','payment_due_date_id','id'); } }
这是相关的型号:
<?PHP namespace App\models; use Illuminate\Database\Eloquent\Model; class PaymentDueDate extends CustomModel { protected $table = 'payment_due_date'; protected $fillable = array('total_amount','acompte_amount','amount_ht','amount_already_payed','payment_total_date','payment_acompte_date','facturation_date','description_facture','type','cash_desk_id','individual_customer_id','partner_id','direction'); protected $guarded = array('id'); public function stay(){ return $this->hasOne('App\models\Stay'); } }
最后控制器:
public function print_partner_invoice($partner_id,$echeance = 0) $partner = Partner::find($partner_id); // this return Collection of model $partner_resa = Partner::reservations_echeance($partner->id,$echeance); if(!$partner || $partner_resa->count() < 1) abort(403); $residence_company = $partner_resa->First()->residence->residence_company; $total_ttc = 0; $already_paid = 0; $tva_amount = 0; foreach ($partner_resa as $key => $resa) { foreach ($resa->stays as $key => $stay) { $amount = $stay->payment_due_date->total_amount; } } $pDF = \PDF::loadView('reglement.partner_invoice',[ 'partner' => $partner,'resas' => $partner_resa,'residence_company' => $residence_company,'total_ttc' => $total_ttc,'already_paid' => $already_paid,'tva_amount' => $tva_amount ]); return $pdf->stream(); }
VAR_dump($doesnotexists1->doesnotexists2->doesnotexists3);
它的null,没有错误,因为var_dump查找$doesnotexists1,如果它为null,它将不会进一步查找.所以你没有得到“试图获得非对象的属性”Execption.
所以,你的问题可能是$stay或$stay-> payment_due_date at
$amount = $stay->payment_due_date->total_amount;
为空/空.
我会检查它
foreach ($partner_resa as $key => $resa) { foreach ($resa->stays as $key => $stay) { if(is_object(stay) && is_object($stay->payment_due_date)) { $amount = $stay->payment_due_date->total_amount; } } }
确保它是一个对象
以上是脚本宝典为你收集整理的php – 对象存在但是试图获取非对象的属性全部内容,希望文章能够帮你解决php – 对象存在但是试图获取非对象的属性所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。