在 Laravel 中的刀片视图内查询

Sir*_*rge 1 laravel-5

嗨,我正在尝试做一个类似的查询

{{ \App\User::where(['name' => $posts->username])->pluck('avatar') }}
Run Code Online (Sandbox Code Playgroud)

但是这个查询输出这样的东西

["1486468548.jpg"]
Run Code Online (Sandbox Code Playgroud)

我在期待

1486468548.jpg
Run Code Online (Sandbox Code Playgroud)

以便它实际上可以被读取。关于如何删除块和引号的任何想法???我知道在 Blade 中查询不是一个好习惯,但是使用我的代码流,我不知道如何获取用户头像。

我的控制器看起来像这样。它是从哪里生成帖子的。有没有办法让我的用户头像具有帖子表的值。我知道它存在,但我不知道如何

public function getDashboard()
{
    $posts = Post::orderBy('created_at', 'desc')->get();

    return view('home', ['post' => $posts]);
}
Run Code Online (Sandbox Code Playgroud)

Rwd*_*Rwd 5

在 Laravel 5.4 中pluck()返回这些值的集合(即使只有一个)。

你可以这样做:

\App\User::where(['name' => $posts->username])->pluck('avatar')->first();
Run Code Online (Sandbox Code Playgroud)

或者

\App\User::where(['name' => $posts->username])->first()->avatar;
Run Code Online (Sandbox Code Playgroud)

话虽如此,我还建议在Posts 和Users之间创建关系,以便您可以急切地加载关系,以便您:

  1. 不必在您的视图内部进行查询(该逻辑不应该真正在那里)。
  2. 不需要时不执行多个查询

https://laracasts.com/series/laravel-from-scratch-2017/episodes/15 https://laravel.com/docs/5.4/eloquent-relationships#one-to-many

然后你可以加载用户的帖子:

$posts = Post::with('user')->orderBy('created_at', 'desc')->get();
Run Code Online (Sandbox Code Playgroud)

并通过以下方式获取头像:

$post->user->avatar;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!