本文目錄
- 一、關聯模型(多對多)
-
- 1.1 多對多關系(抽象)
一、關聯模型(多對多)
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
案例:查詢出每個文章(主)下全部的關鍵詞(從)
文法:
上述文法提及到的關系鍵是指在關系表中的字段名。
建立關鍵詞模型:
php artisan make:model Keyword
建立案例路由:
建立案例控制方法:
// 關系模型多對多
public function duoduiduo () {
// 查詢文章
$data = Article::all();
// 循環
foreach ($data as $key => $value) {
// value是文章模型對象
echo '文章id:'.$value -> id .'<br/>';
echo '文章名稱:'.$value -> article_name .'<br/>';
// 繼續循環關鍵詞
foreach($value -> rel_keyword as $k => $v) {
// $v是關鍵詞的模型對象
echo '  ' . $v -> keyword .'<br/>';
}
echo '<hr/>';
}
}
效果:
在學習的php的路上,如果你覺得本文對你有所幫助的話,那就請關注點贊評論三連吧,謝謝,你的肯定是我寫博的另一個支援。