php - Laravel - 尝试使用 self ref FK 从同一表的行中获取信息

标签 php mysql laravel eloquent

我有一个名为 employees 的表,其中包含以下列:

-id

-名字

-姓氏

-manager_id

manager_id 是属于员工经理的行的 ID。因此,如果 A 是 B 的经理,则 B 行中的 manager_id 将具有 A 的 id

在我的 Employee 模型中,我有以下方法:

public function manager(){
    return Employee::where('id', $this->manager_id)->first();
}

在我尝试执行以下操作时,我认为:

@foreach($employees as $employee)
<tr>
<td style="width: 12%"><span class="fw-semi-bold">{{ $employee->firstname }}</span></td>
<td style="width: 12%"><span class="fw-semi-bold">{{ $employee->lastname }}</span></td>
<td style="width: 20%"><span class="fw-semi-bold">{{ $employee->manager()->firstname . ' ' . $employee->manager()->lastname }}</span></td></tr>
@endforeach

它给出了以下错误:

尝试获取非对象的属性

我尝试在 View 中使用 manager()->firstname 以及 manager->firstname 但每次错误都是一样的。

最佳答案

在你的 Employee 模型中

public function manager()
{
  return $this->belongsTo('App\Manager','manager_id');
}

在 View 中

@foreach($employees as $employee)
<tr>
 <td style="width: 12%"><span class="fw-semi-bold">{{ $employee->firstname }}</span></td>
 <td style="width: 12%"><span class="fw-semi-bold">{{ $employee->lastname }}</span></td>
 <td style="width: 20%"><span class="fw-semi-bold">@if($employee->manager) {{ $employee->firstname }} {{ $employee->lastname  }}@endif</span></td>
</tr>
@endforeach

假设您的 Manager.php 模型位于 app 目录中。如果不是,请更新 belongsTo() 函数的第一个参数中的命名空间。

希望这会有所帮助。

关于php - Laravel - 尝试使用 self ref FK 从同一表的行中获取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39725262/

相关文章:

mysql - 对不同表中的多列进行计数和求和

php - 在php中将文件从一个文件夹移动到另一个文件夹

php - 使用 preg_replace 替换无效字符

PHP 登录表单行为异常

mysql - 更改整个列格式 - phpMyAdmin

php - 将 Artisan 注入(inject) Service 类

php - 如何选择 MySQL 数据库与 PHP 中的 PDO 一起使用?

php - 使用存储在 mysql 数据库中的 if 语句

c# - 在windows中用c#程序连接web服务器中的mysql数据库

php - 关于关系的 laravel 订单查询