【问题标题】:Laravel get record from database in blade viewLaravel 在刀片视图中从数据库中获取记录
【发布时间】:2017-08-18 00:24:53
【问题描述】:

我想知道如何从刀片中的数据库中获取数据,例如从用户表中获取数据:

{{ Auth::user()->name }}

我有桌子user_settings

我想通过记录的用户 ID 从该表中获取记录,如下所示:

{{ UserSettings::user()->my_field }} 

我该怎么做?

【问题讨论】:

  • 试试 {{ UserSettings::user()->my_field ->get()}}
  • return view("你的视图", ["userSettings" =>UserSettings::user()]);现在 $userSettigs 在您的视图中可用
  • 不要从视图层调用数据库,从控制器传递数据
  • 是的,但我必须在我的标题面板中获得一个字段?当此面板包含在布局中时。

标签: php laravel


【解决方案1】:

在你的刀片视图上试试这个

{{ \App\UserSettings::where('user_id',Auth::user()->id)->first()->my_field }} 

默认情况下,模型文件在 App 文件夹中。

这种对数据库表的直接访问不是首选,您可以从控制器函数中将其作为变量返回,例如,

$field = \App\UserSettings::where('user_id',Auth::user()->id)->first()->my_field;  
return view('view_name',comapact('field'));

并像刀片一样使用

{{$field}}

Orkhan 使用雄辩的关系在另一个答案中发布了另一个好方法。 希望你能理解。

【讨论】:

  • 是的,但在我的 UserSettings 模型中,我没有 user() 函数,我得到 Call to undefined method Illuminate\Database\Query\Builder::user()
  • 用户设置表上有user_id吗?
  • 是的,我有这个字段
  • @lukassz 所以请通过接受来结束这个问题
【解决方案2】:

您需要检索与经过身份验证的用户关联的UserSettings

UserSettings::where('user_id', Auth::id())->first()->my_field

您可以定义一个名为 current() 的方法来为您返回它。

class UserSettings extends Model
{
    public static function current()
    {
        return UserSettings::where('user_id', Auth::id())->first()
    }
}

然后使用:

UserSettings::current()

另一方面,最好在用户模型上使用one-to-one relationship

class User extends Model
{
    public function settings()
    {
        return $this->hasOne('App\UserSettings');
    }
}

然后使用:

Auth::user()->settings->my_field

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 2018-06-02
    • 1970-01-01
    • 2020-07-26
    • 2017-09-04
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    相关资源
    最近更新 更多