2017-03-14 9 views
0

ユーザーモデル内にルールを作成しようとしていますが、ユーザーイメージが存在するかどうかを確認しています。存在する場合は完全なイメージURLを返します。 foreach($ users as $ user)ループで作業しています。イメージを取得するlaravelのユーザーモデルを使用して

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');私のブレードビューで私はこれを使用しています: foreachループ内 – 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

アクセッサを使用している2番目のオプションがあり、感謝していますが、最初のオプションを理解できませんでしたあなたが友人モデルに関数を置くと、あなたのユーザモデルに移動します。 – Mehran

+0

あなたは$ this-> user-> imageのようにコード化されているので、関数をfriendクラスに置くことを考えました。ユーザモデルは常に正規のモデル値ではなくアクセサの戻り値を返すので、$ user-> imageを他の場所ではチェックすることはできません。 –

0

何ですかユーザーが作成されると、データベースに既定のイメージを格納します。これが私の移行です。

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

これを:テーブルアバターは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(); 
     }); 

画像を取得するにはあなたは単にあなたがこのような何かをforeachループでは、この

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

のようにそれを呼び出すデフォルト値を持っていますあなたのアバターやブレードの配列を返します。

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