这个代码就是我的获取数据解决方案,这个模型是关系,我的结果是正确的,但我不能从关系中获取数据并在视图中显示,例如;
$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
POST UPDATED:
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 :(得分:1)
首先要改进的是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
答案 1 :(得分: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' }}