繁体   English   中英

Laravel关系不起作用吗?

[英]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_idcompound_id 否则,关系属性将返回null

其次,如果plan_idcompound_id为空/空或planscompounds表中不存在的值,则可以为null

即使为null也有什么解决方案?

如果即使plancompound为空,也需要显示其他字段,则可以将以上内容更改为以下几行:

<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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM