我有一张名为" logs"使用自定义列" auth_id"我有另一个名为" users"具有相同的列名" auth_id"和列"用户名"。
我如何从" logs"用" logs.auth_id"并通过"用户"获取用户名表
现在我的结果是:
$match->messages = DB::table('logs')->where('match_id', '=', $match->match_id)->get();
刀片:
@foreach ($match->messages as $message)
{{ $message->auth_id }}:
{{ $message->message }}
示例:现在我使用{{$ message-> auth_id}}获取AUTH5556,但我需要从"用户"获取USERNAME表{{$ message-> auth_id}}
答案 0 :(得分:1)
不要使用连接,这是使用像laravel(eloquent)这样的东西的全部原因。您需要定义模型之间的关系。
在您的用户模型上,您将定义一个方法
public function logs()
{
return $this->hasMany(Log::class);
}
在您的日志模型上
public function user()
{
return $this->belongsTo(User::class);
}
现在,您需要确保在日志表中有一个user_id列。
现在您可以简单地获取日志
$log = Log::find($id);
您可以检索有关拥有该日志的用户的任何信息,例如刀片文件中的示例。
{{ $log->user->username }}
要获取反向信息,您需要迭代结果,因为用户可以拥有许多日志。例如:
$user = User::find($id);
然后你在刀片上做了类似的事情
@foreach($user->logs as $log)
{{ $log->column_on_log_you_want }}
@endforeach
您还需要考虑急切加载。
这使得laravel如此干净和美观。
阅读文档
答案 1 :(得分:-1)
您需要在查询中使用JOIN
来获取users
表中的用户名。这是link to Laravel manual