【问题标题】:eloquent, retrieve user data with foreign table data雄辩,用外部表数据检索用户数据
【发布时间】:2016-06-05 19:13:17
【问题描述】:

我有一些外部表,用于存储用户的通用通用数据,例如“性别”。我想做的是沿着这些外来数据检索记录的用户数据。如果我这样做:

$id =  Auth::id();

$user = User::find($id);

echo $user;

$user = Auth::user();

echo $user;

我正确地获得了经过身份验证的用户。但是,如果我尝试像这样检索我需要的数据:

$id =  Auth::id();

$user = User::find($id)->with('Gender');

echo $user;

用户表中的所有用户都显示出来了!这怎么可能?

【问题讨论】:

  • 你可以试试Auth::user()->with('Gender'); 吗?
  • 是的,它会抛出一个错误:类 Illuminate\Database\Eloquent\Builder 的对象无法转换为字符串

标签: mysql laravel authentication eloquent


【解决方案1】:

我发现根本不需要使用 with('something) 方法来检索数据。

这将起作用:

$user = Auth::user();

echo $user->gender;

并且会从外表获取所有数据。

【讨论】:

  • 这将导致 N + 1 问题,从长远来看会导致性能问题。 php 区分大小写,所以这将起作用 Auth::user()->with('Gender');试试这个 Auth::user()->with('gender')
  • 性别是属性还是表格
  • Gender 是一个外部表。用户表有一个“gender_id”列。
  • 能否在你的用户类中显示相关功能
  • public function gender(){ return $this->hasOne('App\Gender', 'id', 'gender_id'); }
猜你喜欢
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
相关资源
最近更新 更多