Rumah >rangka kerja php >Laravel >laravel keluarkan povit

laravel keluarkan povit

PHPz
PHPzasal
2023-05-20 16:35:40721semak imbas

Laravel ialah rangka kerja web PHP popular yang menyediakan beberapa ciri dan alatan yang sangat mudah untuk menjadikan pembangunan web lebih mudah dan pantas. Antaranya, Pivot ialah fungsi yang sangat penting untuk mengendalikan perhubungan banyak-ke-banyak. Walau bagaimanapun, dalam beberapa kes, kami mungkin perlu mengalih keluar Pivot.

Mengapa anda perlu mengalih keluar Pivot?

Semasa proses pembangunan, pengehadan Pivot kadangkala timbul dan kami mungkin memerlukan lebih banyak penyesuaian dan kawalan perhubungan banyak-ke-banyak. Pada ketika ini, mengalih keluar Pivot memberikan fleksibiliti yang lebih besar. Berikut ialah beberapa situasi biasa:

  1. Sesuaikan nama medan jadual hubungan
    Pivot secara automatik akan menjana jadual perantaraan yang mengandungi dua kunci asing dan cap masa. Dalam sesetengah kes, kami mungkin perlu menyesuaikan lebih banyak medan, seperti menambah medan status. Pada masa ini, tanpa Pivot, kami boleh membuat jadual perantaraan secara manual dan menyesuaikan nama dan jenis medan.
  2. Kawal penciptaan dan kemas kini jadual hubungan
    Apabila kita menggunakan fungsi Pivot Laravel, jika jadual hubungan tidak wujud, rangka kerja akan menciptanya secara automatik. Walau bagaimanapun, dalam beberapa kes, kami mungkin perlu mencipta jadual ini secara manual dan mempunyai lebih kawalan semasa mengemas kini perhubungan. Selepas mengalih keluar Pivot, kami boleh menulis pernyataan SQL secara manual dan mengawal penciptaan dan kemas kini jadual hubungan secara bebas.
  3. Mengendalikan perhubungan banyak-ke-banyak yang kompleks
    Ciri Pivot Laravel secara amnya sesuai untuk perhubungan banyak-ke-banyak yang mudah. Walau bagaimanapun, dalam beberapa kes yang rumit, kami mungkin memerlukan lebih banyak penyesuaian dan kawalan. Sebagai contoh, kita perlu memproses perhubungan banyak-ke-banyak antara berbilang jadual, atau kita perlu menambah lebih banyak medan pada jadual perhubungan untuk diproses. Pada ketika ini, mengalih keluar Pivot membolehkan kami mempunyai lebih banyak bangunan dan kawalan seperti yang diperlukan.

Bagaimana untuk mengalih keluar Pivot?

Terdapat banyak cara untuk mengalih keluar Pivot Berikut ialah dua cara biasa.

Kaedah 1: Buat jadual perantaraan secara manual

  1. Pertama, buat jadual perantaraan dalam pangkalan data.
CREATE TABLE `user_role` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) unsigned NOT NULL,
`role_id` int(11) unsigned NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  1. Tentukan perhubungan banyak-ke-banyak dalam model
class User extends Model
{
public function roles()
{
return $this->belongsToMany(Role::class, 'user_role', 'user_id', 'role_id');
}
}

class Role extends Model
{
public function users()
{
return $this->belongsToMany(User::class, 'user_role', 'role_id', 'user_id');
}
}
  1. Gunakan kaedah
$user = User::find(1);
$roles = $user->roles;

dalam pengawal Dua: Gunakan middleware

  1. untuk mencipta middleware
php artisan make:middleware SimplifyPivotMiddleware
  1. untuk mengendalikan perhubungan banyak-ke-banyak dalam middleware
namespace AppHttpMiddleware;

use Closure;

class SimplifyPivotMiddleware
{
public function handle($request, Closure $next)
{
$user = $request->user;
$roles = $user->roles()->withTimestamps()->select('id', 'name')->get();
$user->setRelation('roles', $roles);
return $next($request);
}
}
  1. Menggunakan perisian tengah dalam penghalaan
Route::get('/user/{id}/roles', function ($id) {
$user = User::with('roles')->find($id);
return response()->json(['status' => 1, 'data' => $user->roles]);
})->middleware(SimplifyPivotMiddleware::class);

Kesimpulan

Pivot ialah cara terbaik untuk Laravel mengendalikan perhubungan banyak-ke-banyak. Walau bagaimanapun, dalam beberapa kes, kita mungkin perlu menyingkirkan Pivot dan membuat jadual perantaraan secara manual, atau menggunakan perisian tengah untuk mengendalikan perhubungan banyak-ke-banyak. Ini memberikan lebih fleksibiliti dan kawalan, tetapi memerlukan lebih banyak kos pengekodan dan penyelenggaraan.

Atas ialah kandungan terperinci laravel keluarkan povit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Cara menggunakan laravelArtikel seterusnya:Cara menggunakan laravel