Laravel cập nhật trục bổ sung cột
Trong bộ điều khiển Hóa đơn sau khi lưu Hóa đơn, bạn nên sử dụng mối quan hệ Nhiều đến Nhiều để 2 mục cho hóa đơn, đây là cách bạn thực hiện Show
// đây là những gì làm việc cho tôi QuickAdminPanel của chúng tôi có thuộc về trường quan hệToMany, nhưng chúng tôi không có khả năng thêm các cột bổ sung vào bảng tổng hợp. Đừng lo lắng, bài viết này sẽ chỉ cho bạn cách thực hiện thay đổi này theo cách thủ công hoặc triển khai nó trong dự án Laravel của bạn không được tạo bởi QuickAdminPanel Hãy tưởng tượng một kịch bản. bạn có một trang web Công thức và mỗi Công thức có thể bao gồm nhiều Thành phần, vì vậy bạn tạo mối quan hệ nhiều-nhiều và thêm các thành phần với menu thả xuống nhiều Select2 được tạo của chúng tôi Nhưng sẽ hợp lý hơn khi thêm các thành phần với SỐ LƯỢNG của chúng, phải không? . Đối với điều đó, chúng tôi cần một trường bổ sung trong bảng tổng hợp component_recipe Hãy thực hiện điều đó trong bài viết này, đồng thời thay đổi biểu mẫu để có thể chỉ định số lượng này. Đây là kết quả cuối cùng Hoặc, nếu bạn thích một video demo Vì vậy, hãy thực hiện thay đổi, từng bước một Bước 1. Trường mới Số tiền. Di chuyển/Mô hìnhTừ QuickAdminPanel được tạo mặc định, chúng tôi có cấu trúc này ứng dụng/Mô hình/Công thức. php public function ingredients() { return $this->belongsToMany(Ingredient::class); } Hãy thêm trường số tiền vào đây php artisan make:migration add_amount_to_ingredient_recipe_table Và trong cuộc di cư public function up() { Schema::table('ingredient_recipe', function (Blueprint $table) { $table->string('amount'); }); } Và sau đó chúng ta cần chỉ định nó trong app/Models/Recipe. php public function ingredients() { return $this->belongsToMany(Ingredient::class)->withPivot('amount'); } Bạn có thể đọc thêm về những thay đổi Eloquent đó trong tài liệu chính thức của Laravel Bước 2. Lưỡi dao + Bộ điều khiển. Tạo/Chỉnh sửa Biểu mẫuTrong bộ điều khiển, chúng ta cần truyền Thành phần trong phương thức tạo () public function create() { return view('admin.recipes.create', [ 'ingredients' => Ingredient::all(), ]); } Và sau đó trong tài nguyên/lượt xem/quản trị viên/công thức nấu ăn/tạo. lưỡi. php, thay vì trường Select2 đó, chúng tôi sẽ tạo một phần phiến sẽ được sử dụng lại trong chế độ xem Tạo và Lưu trữ. Vì vậy, phần này sẽ giống hệt nhau trong công thức nấu ăn/tạo. lưỡi. php và công thức nấu ăn/chỉnh sửa. lưỡi. php
Bây giờ, những gì bên trong tài nguyên/lượt xem/quản trị viên/công thức/bộ phận/thành phần đó. lưỡi. php? ________số 8Vì vậy, chúng tôi đang tải $ingredients dưới dạng bảng, kiểm tra xem mỗi số tiền có giá trị hay được đặt thành null hay không và liệu chúng tôi có cần tắt đầu vào đó không Ngoài ra, có một phần @('scripts') thêm đoạn mã jQuery để bật/tắt trường số lượng trên hàng, nếu hộp kiểm của thành phần nào đó được đánh dấu Bây giờ, chúng ta lấy $ingredient->value đó ở đâu? public function edit(Recipe $recipe) { abort_if(Gate::denies('recipe_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden'); $recipe->load('ingredients'); $ingredients = Ingredient::get()->map(function($ingredient) use ($recipe) { $ingredient->value = data_get($recipe->ingredients->firstWhere('id', $ingredient->id), 'pivot.amount') ?? null; return $ingredient; }); return view('admin.recipes.edit', [ 'ingredients' => $ingredients, 'recipe' => $recipe, ]); } Như bạn có thể thấy, chúng ta đang sử dụng method map() của Collection và sau đó lấy giá trị từ pivot. cơ cấu số lượng Bước 3. Xác thực/Lưu thành phầnĐầu tiên, thay đổi nhỏ từ mã của QuickAdminPanel mặc định. chúng ta cần thay đổi quy tắc xác thực. từ số nguyên sang chuỗi ở đây, vì số tiền của chúng tôi là chuỗi ứng dụng/Http/Yêu cầu/StoreRecipeRequest. php và UpdateRecipeRequest giống hệt nhau. php 0Cuối cùng, cách chúng tôi lưu trữ và cập nhật dữ liệu, trong RecipesController 1Một lần nữa, một số "ma thuật" của Bộ sưu tập trong phương thức mapIngredients để làm cho các phương thức lưu trữ/cập nhật trở nên dễ đọc hơn và ngắn hơn Làm cách nào để cập nhật cột trụ trong Laravel?Có nhiều cách để cập nhật bảng tổng hợp trong Laravel. Chúng ta có thể sử dụng thuộc tính attachment(), detach(), sync() và pivot để cập nhật bảng trung gian trong Laravel.
Làm cách nào để lấy dữ liệu từ bảng tổng hợp trong Laravel?Làm cách nào để lấy dữ liệu bảng tổng hợp trong Laravel 8? . // Trong mô hình Người dùng. php, thêm vớiPivot; chức năng công khai khách hàng(){ trả về $this->belongsToMany('role') ->withPivot('loại'); // sau đó truy cập trường bằng ->pivot; $current_user->customer->pivot->type Làm cách nào để tạo bảng tổng hợp trong Laravel?Làm cách nào để tạo bảng tổng hợp Laravel? . Thuộc tính trục giao tiếp với bảng trung gian này trong bộ điều khiển hoặc mô hình trong Laravel. choose the intermediate table and it is called a pivot table in terms of Laravel. The pivot attribute communicates with this intermediate table in controllers or models in Laravel.
Bảng tổng hợp trong Laravel là gì?Laravel Daily có một bài đăng mới về bảng tổng hợp và mối quan hệ nhiều-nhiều. Tôi muốn nói về một tính năng của Laravel, tính năng này thực sự hữu ích nhưng có thể khó hiểu lúc đầu. Bảng tổng hợp là một ví dụ về bảng trung gian có mối quan hệ giữa hai bảng "chính" khác |