Tôi đang cố gắng sử dụng các mối quan hệ hùng hồn để hiển thị tên của bệnh nhân thay vì khóa ngoại id của bệnh nhân. Thay vào đó, nó chỉ hiển thị id bệnh nhân như thể nó không nhìn thấy mối quan hệ
Chức năng điều khiển của tôi là
public function getActions[]{
$data = Action::all[];
return DataTables::of[$data]
->addColumn['name',function[Action $action]{
return empty [$action->patient->first_name] ? $action->patient_id : $action->patient->first_name;
//return DB::raw["SELECT * FROM 'patients' WHERE 'patients_id' = ?", $action->patient_id];
}]
->make[true];
}
Hàm js của tôi trong chế độ xem là
Lớp Hành động của tôi là
class Action extends Model
{
protected $table ="actions";
protected $fillable=[
'user_id', 'patient_id', 'option_id', 'action_status_id', 'is_complete', 'due_date',
];
protected $primary_key = "action_id";
public $incrementing = false;
public function patients[]{
return $this->belongsTo['App\Patient','patient_id','action_id'];
}
}
Lớp bệnh nhân của tôi là
class Patient extends Model
{
protected $table ="patients";
protected $fillable=[
'first_name', 'last_name', 'email', 'phone', 'dob', 'gender_id', 'is_active',
];
protected $primary_key = 'patient_id';
public $incrementing = false;
public function actions[]{
return $this->hasMany['App\Action','action_id','patient_id'];
}
}
Rất nhiều người đã đặt câu hỏi trên Github Repo của chúng tôi về cách họ có thể hiển thị dữ liệu mối quan hệ thành chỉ mục trong khi sử dụng Datatables. vì vậy tôi quyết định viết một bài hướng dẫn chi tiết về điều đó. Hãy xem làm thế nào nó có thể
Vấn đề
Hãy tưởng tượng kịch bản đơn giản sau đây. Chúng tôi có một bảng người dùng và chúng tôi có một bảng bài viết. Bảng Post khá đơn giản với các trường sau
- nhận dạng
- tác giả_id
- tiêu đề
- thân hình
- created_at
- cập nhật tại
Trong đó author_id là khóa ngoại đối với bảng người dùng. Chúng tôi muốn hiển thị tên tác giả vào bảng mục lục
Nhưng vì chúng tôi cần dữ liệu đó từ mối quan hệ, nên không có cách nào trực tiếp để hiển thị dữ liệu đó trong Datable
Giải pháp
Hãy thực hiện các bước sau [trước khi thực hiện các bước này, hãy tạo CRUD của bạn với các bảng dữ liệu cho mô hình Bài đăng]
Bước 1. Thêm mối quan hệ tác giả vào mô hình Bài viết
Vì chúng tôi muốn hiển thị tên tác giả của bài đăng, hãy thêm mối quan hệ tác giả vào Bài đăng. php
public function author[] {
return $this->belongsTo[User::class, 'author_id'];
}
Bước 2. Sửa PostDataTable
Vì chúng ta phải hiển thị dữ liệu quan hệ nên chúng ta cần tải nó bằng laravel. Sửa đổi phương thức truy vấn của PostDataTable. php. cái gì đó như,
public function query[Post $model] {
return $model->newQuery[]->with[['author']];
}
Ngoài ra, chúng ta cần thêm một tên tác giả cột vào datatable. vì vậy hãy sửa đổi phương thức getColumns và thêm phương thức đó vào mảng. cái gì đó như,
protected function getColumns[] {
return [
'title',
'author_name' => new \Yajra\DataTables\Html\Column[[
'title' => 'Author Name',
'data' => 'author.name',
'name' => 'author.name'
]]
];
}
Điều này sẽ thêm một cột nữa với tiêu đề "Tên tác giả" trong bảng dữ liệu trước cột "Hành động". Ở đây, chúng tôi đang thêm cột có thể dữ liệu tùy chỉnh trong đó khóa sẽ là tên của cột mà dữ liệu có thể sử dụng nội bộ, tiêu đề sẽ được sử dụng cho tiêu đề tiêu đề Cột có thể dữ liệu và dữ liệu sẽ được sử dụng để truy xuất dữ liệu
Và đó là nó. Chạy mã của bạn và bạn sẽ có thể thấy Tên tác giả của bài đăng trong bảng dữ liệu của bạn
Laravel dataTables với hướng dẫn ví dụ về mối quan hệ. Tại đây, bạn sẽ tìm hiểu cách hiển thị và lọc cột trong bảng dữ liệu yajra có mối quan hệ
Giả sử bạn có hai bảng đầu tiên là bài đăng và bảng thứ hai là người dùng và bạn tạo mối quan hệ cho mỗi bảng. Sau đó, bạn muốn hiển thị và lọc tiêu đề bài viết và người viết những bài viết này [tên tác giả]. Lúc đó bạn cần sử dụng các cột laravel yajra dataTables có quan hệ
Đồng thời, hướng dẫn này trình bày cho bạn cách sử dụng bộ lọc trên các cột dataTables có mối quan hệ
Laravel DataTables với ví dụ về mối quan hệ
Thực hiện theo các bước sau và sử dụng mối quan hệ trên laravel yajra dataTables
- Bước 1. Tải xuống ứng dụng Laravel mới
- Bước 2. Thiết lập cấu hình cơ sở dữ liệu
- Bước 3. Cài đặt Yajra DataTable
- Bước 4. Tạo Migration và Modal
- Bước 5. Tạo tuyến đường
- Bước 6. Tạo bộ điều khiển bằng lệnh
- Bước 7. Tạo tập tin lưỡi dao
- Bước 8. Chạy máy chủ phát triển
Bước 1. Tải xuống ứng dụng Laravel mới
Trước hết, hãy mở thiết bị đầu cuối của bạn và sử dụng lệnh sau để tải xuống hoặc cài đặt thiết lập mới của laravel
composer create-project --prefer-dist laravel/laravel blog
Bước 2. Thiết lập cấu hình cơ sở dữ liệu
Sau đó, mở “. env” và cập nhật tên cơ sở dữ liệu, tên người dùng và mật khẩu trong tệp env
________số 8_______Bước 3. Cài đặt Yajra DataTable
Cài đặt dữ liệu yajra thông qua gói trình soạn thảo, vì vậy hãy mở thiết bị đầu cuối của bạn và chạy lệnh sau
composer require yajra/laravel-datatables-oracle
Sau đó, bạn cần đặt nhà cung cấp và bí danh
cấu hình/ứng dụng. php
..... 'providers' => [ .... Yajra\DataTables\DataTablesServiceProvider::class, ] 'aliases' => [ .... 'DataTables' => Yajra\DataTables\Facades\DataTables::class, ] .....
Bước 4. Tạo Migration và Modal
Trong blog này, Chúng tôi sẽ tạo di chuyển bảng bài đăng và tạo Post Modal bằng lệnh dưới đây
php artisan nake:modal Post -m
database/migrations/2020_05_20_070104_create_posts_table. php