mysql - 如何使用数据表从 Laravel 中的数据透视表检索数据

标签 mysql database laravel datatables pivot

我正在尝试使用 Yajra Datatables 从数据透视表中检索数据。

模型项目.php

class Project extends Model
{
    protected $fillable = ['id','client_id', 'name','description', 'projectType','service_id','files','startDate','endDate','progress','status'];

    public function employee()
    {
        return $this->belongsToMany('App\Employee');
    }
}

模型 Employee.php

class Employee extends Model
{
    protected $fillable = ['id', 'name', 'surname','address','tel', 'email','profession'];

    public function project()
    {
        return $this->belongsToMany('App\Project');
    }
}

模型 EmployeeProject.php

class EmployeeProject extends Pivot
{
    protected $fillable = ['id', 'employee_id', 'project_id'];
}

ProjectsController.php

$projects = Project::with('employee');
return Datatables::of($projects)
->make(true);

projects.blade.php

$('#datatable').DataTable({
                "processing": true,
                "serverSide": true,
                "paging":   false,
                "ajax": "{{ route('projects.getdata') }}",
                "order": [[1,'desc']],
                "columns": [    
                {"data": "id"},     
                {"data": "client_id"},
                {"data": "name"},
                {"data": "description"},
                {"data": "projectType"},
                {"data": "service_id"},               
                {"data": "employees.name"}, - **I need to retrieve the names of the employees who are involved in the project**
                {"data": "files"},
                {"data": "startDate"},
                {"data": "endDate"},
                {"data": "progress", orderable:false, searchable: false},
                {"data": "status"},

让您知道我正在使用数据透视表employee_project 来链接表(员工和项目)。创建功能运行良好,因为记录已正确添加到数据透视表中。 问题是我需要显示参与该项目的所有员工的姓名,例如:

id| name | employeeName  |...|
-----------------------------
1 | test | John, Mark,...|...|

提前谢谢您。

最佳答案

尝试这样的事情:

在projects.blade.php

{
  data: function (row) {
   let employeeNames= [];
     $(row.employee).each(function (i, e) {
       employeeNames.push(e.name);
       });
     return employeeNames.join(", ")
   }, name: 'employee.name'
},

关于mysql - 如何使用数据表从 Laravel 中的数据透视表检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59318872/

相关文章:

python - SQLAlchemy pool_size 的 session 选项键是什么?

mysql - 通过获取 ListView 中特定列中的值与我的数据库中的值的总和来更新数据库

java - 每次在持有这些面板的 JFrame 中单击任何按钮时,刷新/重新创建卡片布局中的所有面板

mongodb - MongoShell : SyntaxError: missing : after property id @(shell):1:137 mongo

laravel - 缺少表单操作所需的参数

php - Laravel 5.2 - 带数组的过滤器

mysql - MySQL 语句的不同格式/效率

mysql - 将 Adob​​e Analytics 连接到 MYSQL

sql - 在具有不同名称的列上连接表但在结果中产生单列

php - 无法使用 Eloquent 即时创建新表