iT邦幫忙

第 11 屆 iThome 鐵人賽

1

本系列文的環境狀態,可點擊此連結後花園環境參考

本內容還會使用到 Flower 的 Eloquent Model 及 migration
如果尚未建立 Flower ,可參考此連結 Flower step1Flower step2

建立 Profile 的 Eloquent Model 及 migration

先建一個新的 Eloquent Model 命名為 Profile ,並加 -m 同時產生 migration 的 table。

$ php artisan make:model Profile -m

路徑:database/migrations/{日期}_create_profiles_table.php

新增下列程式碼到 public function up()Schema::create

$table->string('personality');
$table->unsignedBigInteger('flower_id');

程式碼放置位置,可參考此圖

確認無誤後,在 Terminal 輸入指令,生成資料表

$ php artisan migrate

之後可到資料庫( MySQL )確認 profiles 資料表是否已生成。

1 對 1 關係連結

會用到 hasOnebelongsTo 的方法

hasOne:每個 Flower 有一個 Profile

  1. 外鍵保存在關聯表中
  2. 保存時,自動更新關聯表記錄
  3. 刪除主表記錄時,自動刪除關聯記錄

belongsTo(逆向): Profile 屬於 Flower

  1. 外鍵放置在主表中
  2. 保存時不會自動更新關聯表的記錄
  3. 刪除時不會自動更新關聯表的記錄

Flower hasOne Profile

到 Flower 檔,放入 hasOne 方法
路徑:BackGarden/app/Flower.php

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;


class Flower extends Model
{
    public function profile()
    {
        // 每個 Flower 都有 Profile(正向關係)
        return $this->hasOne('App\Profile'); 
    }
}

Profile belongsTo Flower

到 Profile 檔,放入 belongsTo 方法
路徑:BackGarden/app/Profile.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Profile extends Model
{
    protected $fillable = [
        'personality','flower_id',
    ];
    public function flower()
    {
        // Profile 屬於 Flower (逆向關係)
        return $this->belongsTo('App\Flower'); 
    }
}

基本上,到此 1 對 1 關係就已經建立完成了,接著就是確認關係有沒有建立起來了。
這部份就等到 也許忠貞的 1 對 1 關係? Part 2 ,再繼續囉!

參考連結:
❁ Laravel 官方-Eloquent: Relationships
❁ Laravel中的hasOne()和belongsTo()理解
❁ Charleen 大 - Laravel新手基礎訓-Eloquent: Relationships-One to One


上一篇
✾後花園D36✾- 來播種吧! ( seeder 填充資料 )
下一篇
✾後花園D38✾-也許忠貞的 1 對 1 關係? Part 2( 測試 One To One Relationships )
系列文
在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映49
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
阿展展展
iT邦好手 1 級 ‧ 2019-11-10 02:48:48

https://ithelp.ithome.com.tw/upload/images/20191110/201195467Qwu351igA.png

一對一關係 欸??? /images/emoticon/emoticon19.gif

我要留言

立即登入留言