Rumah > rangka kerja php > Laravel > teks badan

laravel keluarkan povit

PHPz
Lepaskan: 2023-05-20 16:35:40
asal
675 orang telah melayarinya

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;
Salin selepas log masuk
  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');
}
}
Salin selepas log masuk
  1. Gunakan kaedah
$user = User::find(1);
$roles = $user->roles;
Salin selepas log masuk

dalam pengawal Dua: Gunakan middleware

  1. untuk mencipta middleware
php artisan make:middleware SimplifyPivotMiddleware
Salin selepas log masuk
  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);
}
}
Salin selepas log masuk
  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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!