我有兩個型號:Laravel Eloquent設置模型關係的默認值?
class Product extends Eloquent {
...
public function defaultPhoto()
{
return $this->belongsTo('Photo');
}
public function photos()
{
return $this->hasMany('Photo');
}
}
class Photo extends Eloquent {
...
public function getThumbAttribute() {
return 'products/' . $this->uri . '/thumb.jpg';
}
public function getFullAttribute() {
return 'products/' . $this->uri . '/full.jpg';
}
...
}
這工作得很好,我可以打電話$product->defaultPhoto->thumb
和$product->defaultPhoto->full
,並獲得了相關圖像的路徑,並獲得使用$product->photos
,並通過循環值的所有照片。
問題出現在產品沒有照片時,我似乎無法找到一種方法來爲這種情況設置默認值。
我試圖做的事情,如
public function photos()
{
$photos = $this->hasMany('Photo');
if ($photos->count() === 0) {
$p = new Photo;
$p->url = 'default';
$photos->add($p);
}
return $photos;
}
我也創建了一個全新Collection
存儲在新Photo
模型,但他們都返回相同的錯誤:
Call to undefined method Illuminate\Database\Eloquent\Collection::getResults()
有任何人做過類似的事情?
在此先感謝!
我不會把這種行爲放在模型中。我會簡單地在控制器/視圖中使用if($ product-> photo === null){執行某些操作}。 – Dave
如果您想要爲這些項目應用默認值,那麼在數據庫級別做更好嗎?這將允許一致處理NULL情況。 –
我採取了在視圖中執行以下操作:'{{$ product-> defaultPhoto? $ product-> defaultPhoto-> thumb:'/img/default-product.png'}}' –