2016-05-13 11 views
1

このコードはデータ取得ソリューションです。このモデルはリレーションシップであり、結果は真ですが、リレーションシップからデータを取得することはできません。Laravelはリレーションシップからデータを取得し、ビューに表示します

$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を取得し、ビューにそれを表示することはできません。

<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 

UPDATED POST:

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'); 
    } 
} 
+0

ことができます'UserAccountNumber'モデルを教えてください。 – codedge

+0

@codedgeはいサー。投稿が更新されました。 –

+0

私はまだ 'class UserAccountNumber'モデルクラスを見ることができません。 – codedge

答えて

0

まず最初は、あなたのUserAccountNumberモデルです。あなたのcurrency_type関係は次のように記述する必要があります。

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); 

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

UserAccountNumberのいくつかは、それに接続さcurrency_typeを持っていないようです。あなたのコードにこのような何かを追加します。

@if (isset($contents->currency_type)) 
    {{ $contents->currency_type->currency_type }} 
@endif 

または:改善する

{{ $contents->currency_type->currency_type or 'There is not type' }} 
+0

'currency_type'は関係です –

+0

しかし、適切な関係があれば、 e。 1対多、1つのCurrencyType-to-many-UserAccountNumbers、常にCurrencyType、right @Alexeyがあるはずですか? – codedge

関連する問題