Laravel 如何在视图上为特定的经过身份验证的用户显示数据库表数据

Laravel 如何在视图上为特定的经过身份验证的用户显示数据库表数据,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,我目前正在开发一个功能,当用户创建时,可以选择他的工作位置,我通过外键连接,用户可以选择特定工作的ID,并且在存储数据时工作良好,特定字段的实际ID显示在users表上,但现在我的问题是当我想显示经过身份验证的用户的特定数据时 这是我的桌子 约伯表 身份证件 工作名称 生产线经理 部门 树枝 工作类型 id是位于的users表的外键 工作证 这是我的工作控制器: public function index() { $role = Auth::guard('web')-&g

我目前正在开发一个功能,当用户创建时,可以选择他的工作位置,我通过外键连接,用户可以选择特定工作的ID,并且在存储数据时工作良好,特定字段的实际ID显示在users表上,但现在我的问题是当我想显示经过身份验证的用户的特定数据时 这是我的桌子

约伯表

身份证件 工作名称 生产线经理 部门 树枝 工作类型 id是位于的users表的外键

工作证 这是我的工作控制器:

public function index()
    {
        $role = Auth::guard('web')->user()->role_id;
        if($role == 1)
        {
            $jobs = Job::latest()->where('id',auth()->user()->id)->get();
            return view('job.index',compact('jobs'));
        }
模型:

class Job extends Model
{
    protected $table = 'jobs';

    public function jobWhich()
    {
        return $this->job_name;
    }
这是我想要的视图,我在创建用户时选择的ID的数据,在这里显示插入数据库的静态数据,这样它就不会改变

<tbody>
@foreach($jobs as $job)
<tr>
<td>{{$job->job_name}}</td>
<td>{{$job->line_manager}}</td>
<td>{{$job->department}}</td>
<td>{{$job->branch}}</td>
<td>{{$job->job_type}}</td>
</tr>
@endforeach
</tbody>

我不确定是否需要向用户控制器显示如何将其存储到用户中,但它运行良好,因为我可以在创建时在用户处看到特定字段的id。您需要用户和作业之间的关系。只需在jobs表/迁移中添加created_by column。然后将此关系用于职务模型:

class Job extends Model
{
    
    public function creator()
    {
        return $this->belongsTo(User::class,'created_by');
    }
}
在控制器中,请使用以下命令:

$jobs = Job::latest()->where('created_by',auth()->user()->id)->get();

您可以在作业的用户模型上定义关系,以简化此操作:

class User ...
{
    public function job()
    {
        return $this->belongsTo(Job::class);
    }
}
然后,您可以通过关系简单地获得用户的作业:

$job = Auth::guard('web')->user()->job;
属于用户模型

public function job(){
   return $this->belongsTo(App\Job::class, 'user_id', 'job_id');
}
工作模式

public function users(){
   return $this->hasMany(App\User::class, 'job_id', 'user_id');
}

控制器

$user = Auth::user();
// In cas you want to eager load.
$user->load('job');
您可以使用作业关系访问用户的作业

   echo $user->job->job_name;


如果我理解正确,您希望显示用户的作业

如果这是正确的,您需要在您的用户模型中设置foreig密钥

 public function job()
    {
        return $this->belongsTo('App\Job');
    }
然后您可以获得用户作业,如:$job=$user->job或$user->job->get

之后,您可以像处理所有作业那样将其传递给视图: 返回视图'job.index',压缩'job'

最后,您不需要在刀片服务器中使用foreach循环: 您可以简单地显示像`{$job->job\u name}这样的项目?n等等


如果这是您的意思,请告诉我

也许您想在用户和作业模型之间建立一种关系,以便轻松实现这一点?用户有一个引用作业id的外键,因此这可能可行吗?但是我很新,所以我不确定该怎么做,我所需要做的只是显示用户在工作id上的id字段中的数据,从我创建它时开始谢谢你非常感谢你非常感谢