2017-03-14 146 views
0

我試圖在用戶模型中創建一個規則,檢查用戶圖像是否存在,如果存在,則返回完整圖像url,我這樣做但不是在foreach中工作($用戶爲$ user)循環。通過laravel中的用戶模型獲取圖像url

public function Image(){ 
    $image = $this->user->image; 
    if(empty($image)){ 
    $image = asset('images/profile/no-image.png'); 
    }else{ 
    $image = asset('images/profile/no-image.png'); 
    } 
    return $image; 
    } 
+0

你的foreach語法是什麼? –

+0

我通過與用戶模型連接的Friend模型獲取用戶:return $ this-> belongsTo('App \ User','requester_id');在我的刀片視圖中我使用這個: Mehran

回答

1

如果您將功能放在朋友模型上,然後將其移動到您的用戶模型。然後,讓這樣的功能:

public function Image() 
{ 
    if ($this->image) { 
     return asset('images/profile/' . $this->image); 
    } else { 
     return asset('images/profile/no-image.png'); 
    } 
} 

但我建議你使用laravel Accessor

public function getImageAttribute($value) 
{ 
    if ($value) { 
     return asset('images/profile/' . $value); 
    } else { 
     return asset('images/profile/no-image.png'); 
    } 
} 

然後你就可以通過你的模型中獲取圖像屬性:

foreach($friends as $friend) { 
    {{ $friend->user->image }} 
} 
+0

我得到了第二個使用Accessor的選項,它在工作,謝謝,但我不明白第一個選項,你的意思通過如果你把功能放在朋友模型上,然後把它移動到你的用戶模型 – Mehran

+0

你編碼像$ this-> user-> image,所以我想也許你把功能放在朋友類中。順便說一句,如果你使用accessor你不能再檢查$ user-> image,因爲用戶模型總是返回訪問器返回值而不是常規模型值。 –

0

我做什麼在創建te用戶時將默認圖像存儲在數據庫中。這是我的遷移。該表形象有一個默認值default.png

 Schema::create('users', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('firstname'); 
      $table->string('lastname'); 
      $table->string('email')->unique(); 
      $table->string('password'); 
      $table->string('avatar')->default('default.png'); 
      $table->rememberToken(); 
      $table->timestamps(); 
     }); 

以獲取圖像,你只需調用它

<img src="/image/location/{{ Auth::user()->avatar }}"> 

在foreach循環你做這樣的事情:

$users = User::all(); 
avatars = []; 
foreach ($users as $key => $user){ 
    $avatars[] = $user->avatar; 
} 

這返回一組你的頭像或刀片中你做這樣的事情:

@foreach($users as $user) 
<img src="/image/location/{{ $user->avatar }}"> 
@endforeach 
相關問題