2017-08-12 114 views
0

我想知道是否可以得到一些建議。Laravel - 如果返回null,則自動更改結果

在我的刀片模板中,我具有以下內容;

<a href="#">{{ $gallery->creator->name }}</a> 

我的控制器看起來像這樣;

public function show(Gallery $gallery) 
{ 
    return view('galleries.show', compact('gallery')); 
} 

下一位是其中有一些麻煩,IM,在我的模型,我有以下關係

public function creator() 
{ 
    return $this->belongsTo(User::class, 'user_id'); 
} 

一些畫廊有一個空user_id的值,因爲它們沒有貼時,登錄。

有沒有一種方法可以將$ gallery-> creator->名稱設置爲'Anonymous',如果user_id爲空,但如果有值,則使用已存在的內容?任何幫助製作mutator將是非常好的

任何幫助將不勝感激。

乾杯,

+0

可以使用這個mutator,看看這裏:[laravel mutators](https://laravel.com/docs/5.4/eloquent-mutators#defi ning-a-mutator) – Naco

+0

@ user3681740嘿,這看起來像個好主意......你有沒有可能給我一個例子? – BigJobbies

回答

1

這是我在我的情況下,修復了這個問題。

裏面的Gallery模型,那就是你有這種關係定義:

public function creator() 
{ 
    return $this->belongsTo(User::class, 'user_id'); 
} 

添加此訪問:

public function getCreatorNameAttribute() 
{ 
    if ($this->creator) { 
     return $this->creator->name; 
    } 
    return "Anonymous"; // any default value you want to return here. 
} 

以及如何使用它刀片模板:

<a href="#">{{ $gallery->creatorName }}</a> 
+0

完美...正是我在找的東西。謝謝! – BigJobbies

+0

很高興,它有幫助。 –

0
<a href="#">{{ $gallery->creator ? $gallery->creator->name : 'Anonymous' }}</a>