一、關聯模型(多對多)
1.1 多對多關系(抽象)
例:一篇文章可能有多個關鍵詞,一個關鍵詞可能被多個文章使用, 關鍵詞表:
| 欄位id | 主鍵 |
|---|---|
| 欄位keyword | 關鍵詞 |
| 文章與關鍵詞的關系表: | |
| 欄位id | 主鍵 |
| -- | -- |
| 欄位article_id | 文章id |
| 欄位key_id | 關鍵詞id |
| 創建遷移檔案: | |
php artisan make:migration create_keyword_table | |
php artisan make:migration create_relation_table | |
![]() | |
| 撰寫遷移檔案的代碼: | |
![]() | |
![]() | |
執行遷移php artisan migrate | |
![]() | |
![]() | |
| 創建填充器: | |
php artisan make:seeder KeywordAndRelationTableSeeder | |
![]() | |
| 撰寫填充器資料: |
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use DB;
class KeywordAndRelationTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//關鍵詞資料
DB::table('keyword') -> insert([
['keyword' => '搞笑'],
['keyword' => '文藝'],
['keyword' => '正片'],
['keyword' => '驚悚'],
['keyword' => '娛樂'],
['keyword' => '武術'],
]);
//關系表
DB::table('relation') -> insert([
[
'article_id' => rand(1,3),
'keyword_id' => rand(1,6)
],
[
'article_id' => rand(1,3),
'keyword_id' => rand(1,6)
],
[
'article_id' => rand(1,3),
'keyword_id' => rand(1,6)
],
[
'article_id' => rand(1,3),
'keyword_id' => rand(1,6)
],
]);
}
}
執行填充器: php artisan db:seed --class=KeywordAndRelationTableSeeder ![]()


案例:查詢出每個文章(主)下全部的關鍵詞(從) 語法:
return $this -> belongsToMany(被關聯模型的元素空間路徑, 多對多模型的關系表名, 關系表中當前模型中的關系鍵,關系表中被關聯模型的關系鍵)
上述語法提及到的關系鍵是指在關系表中的欄位名, 創建關鍵詞模型: php artisan make:model Keyword
???????


創建案例路由:
![]()
創建案例控制方法:

效果:

在學習的php的路上,如果你覺得本文對你有所幫助的話,那就請關注點贊評論三連吧,謝謝,你的肯定是我寫博的另一個支持,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292652.html
標籤:其他






