[英]Laravel relations are not working?
我与存款模型有关系,但是关系不起作用。
错误:尝试获取非对象的属性(视图:C:\\ xamp \\ htdocs \\ assets \\ core \\ resources \\ views \\ user \\ deposit-history.blade.php)
查看代码
<tbody>
@php $i = 0;@endphp
@foreach($deposit as $p)
@php $i++;@endphp
<tr>
<td>{{ $i }}</td>
<td width="10%">{{ date('d-F-Y h:s:i A',strtotime($p->created_at)) }}</td>
<td><span class="aaaa"><strong>{{ $p->plan->name }}</strong></span></td>
<td>#{{ $p->deposit_number }}</td>
<td>{{ $p->amount }} - {{ $basic->currency }}</td>
<td width="13%">{{ $p->percent }} %</td>
<td>{{ $p->time }} - times</td>
<td><span class="aaaa"><strong>{{ $p->compound->name }}</strong></span></td>
<td>
@if($p->status == 0)
<span class="label label-secondary"><i class="fa fa-spinner"></i> Running</span>
@else
<span class="label label-success"><i class="fa fa-check" aria-hidden="true"></i> Completed</span>
@endif
</td>
</tr>
@endforeach
</tbody>
型号代码
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Deposit extends Model
{
protected $table = 'deposits';
protected $fillable = ['deposit_number','user_id','plan_id','amount','status','percent','time','compound_id'];
public function plan()
{
return $this->belongsTo(Plan::class,'plan_id');
}
public function compound()
{
return $this->belongsTo(Compound::class,'compound_id');
}
public function user()
{
return $this->belongsTo(User::class,'user_id');
}
}
您认为:
<td><span class="aaaa"><strong>{{ $p->plan->name }}</strong></span></td>
和这个:
<td><span class="aaaa"><strong>{{ $p->compound->name }}</strong></span></td>
如果您总是有$p->plan
和$p->compound
那么两行是否可以工作。 但是,如果您没有(例如null
) $p->plan
或$p->compound
,它将抛出异常(试图获取非对象的属性)。
那么,这些属性何时将为null
?
首先,您需要确保在deposits
表中有plan_id
和compound_id
。 否则,关系属性将返回null
。
其次,如果plan_id
或compound_id
为空/空或plans
或compounds
表中不存在的值,则可以为null
。
即使为null
也有什么解决方案?
如果即使plan
或compound
为空,也需要显示其他字段,则可以将以上内容更改为以下几行:
<td><span class="aaaa"><strong>{{ isset($p->plan) ? $p->plan->name : '' }}</strong></span></td>
和
<td><span class="aaaa"><strong>{{ isset($p->compound) ? $p->compound->name : '' }}</strong></span></td>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.