Laravel 从关系中获取数据并在视图中显示 [英] Laravel get data from relationship and show in view

查看:75
本文介绍了Laravel 从关系中获取数据并在视图中显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

只是这个代码是我的获取数据解决方案,这个模型是关系,我的结果是真实的,但我无法从关系中获取数据并在视图中显示,例如;

simply this code is my get data solution, this models are relationships and my result is true but i can't get data from relationship and show that on view, for example;

$data = UserAccountNumber::with(['currency_type'])->orderBy('id', 'DESC')->paginate(50);

此代码返回以下结果:

LengthAwarePaginator {#585 ▼
  #total: 2
  #lastPage: 1
  #items: Collection {#601 ▼
    #items: array:2 [▼
      0 => UserAccountNumber {#588 ▶}
      1 => UserAccountNumber {#589 ▼
        #table: "user_account_numbers"
        #guarded: array:1 [▶]
        #connection: null
        #primaryKey: "id"
        #perPage: 15
        +incrementing: true
        +timestamps: true
        #attributes: array:9 [▼
          "id" => 2
          "user_id" => 17
          "account_number" => "24234234"
          "card_number" => "242423423"
          "sheba" => "asdasdad"
          "currency_type" => 5
          "status" => 0
          "created_at" => "2016-05-13 10:55:00"
          "updated_at" => "2016-05-13 10:55:00"
        ]
        #original: array:9 [▶]
        #relations: array:1 [▼
          "currency_type" => CurrencyType {#603 ▼
            #table: "currency_type"
            #fillable: array:3 [▶]
            #dates: array:1 [▶]
            #connection: null
            #primaryKey: "id"
            #perPage: 15
            +incrementing: true
            +timestamps: true
            #attributes: array:7 [▼
              "id" => 5
              "user_id" => 1
              "currency_type" => "EURO"
              "currency_symbol" => "EUR"
              "created_at" => "2016-04-17 12:07:47"
              "updated_at" => "2016-04-17 12:07:47"
              "deleted_at" => null
            ]

查看:

在视图中我可以获得 UserAccountNumber 数据,但我无法获得 currency_type 并在视图中显示:

in view i can get UserAccountNumber data, but i can not get currency_type and show that on view:

<table class='table-style' cellpadding='0' cellspacing='0'>
    @foreach ($data as $key=>$contents)
        <tr>
            <td>{{$contents->card_number}}</td>
            <td>{{$contents->card_number}}</td>
            <td>{{$contents->seba}}</td>
            <td>{{$contents->created_at}}</td>
            <td>
                {{$contents->currency_type->currency_type}}
            </td>
        </tr>
    @endforeach
</table>

我在查看 {{$contents->currency_type->currency_type}} 时出错.

错误:

Trying to get property of non-object

帖子更新:

class UserAccountNumber extends Model
{
    protected $table   = 'user_account_numbers';
    protected $guarded = ['id'];

    public function user()
    {
        return $this->belongsTo('App\Http\Models\User');
    }

    public function currency_type()
    {
        return $this->belongsTo('App\Http\Models\CurrencyType', 'currency_type', 'id');
    }
}

推荐答案

首先要改进的是 UserAccountNumber 模型.你的 currency_type 关系应该写成:

First thing to improve is in your UserAccountNumber model. Your currency_type relation should be written like:

public function currencyType()
{
    return $this->belongsTo(CurrencyType::class, 'currency_type', 'id');
}

您的电话将如下所示:

// using the currencyType() method from above
$data = UserAccountNumber::with('currencyType') 
    ->orderBy('id', 'DESC')
    ->paginate(50);

然后您可以访问您的货币类型:

You then can access the currency type in your with with:

@foreach ($data as $key=>$contents)
    $contents->currencyType->currency_type
@endforeach

这篇关于Laravel 从关系中获取数据并在视图中显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆