本系列文的環境狀態,可點擊此連結後花園環境參考
如果這次做的留言版有想跟着一起做的看倌,因爲有用到之前的設定,建議回顧下列這篇連結的內容:
✾後花園D23✾-種花囉! Part 3( 會員系統 CRUD 之 Route 及 Middleware 設定 )
這次做的是跟 flower 有關聯的 Stone 留言版,會有 CRUD 的部份,就會像是個會員的留言版,只是我調換了一般常用的名稱,改用成 flower 跟 stone 取代,主要是爲減少名稱混肴的情形,看倌們就當作刻文在石碑上留言吧!
在 Terminal 輸入指令
$ php artisan make:model Stone -m
路徑:database/migrations/{日期}_create_stones_table.php
填入程式碼
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateStonesTable extends Migration
{
public function up()
{
Schema::create('stones', function (Blueprint $table) {
$table->bigIncrements('id');
// 建立 flower_id 的欄位
$table->unsignedBigInteger('flower_id');
// 建立標題與內文的欄位
$table->string('title');
$table->string('content');
// $table -> 此 table 的 'flower_id' -> 參照指定的 table 欄位名 爲 'id' -> 指定的 table 爲 'flowers'
$table->foreign('flower_id')->references('id')->on('flowers');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('stones');
}
}
在 Terminal 輸入指令,執行 migrate
$ php artisan migrate
路徑:app/Stone.php
填入程式碼
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
class Stone extends Model
{
use Notifiable;
// 批量分配 ( mass assignment ) - 允許哪些欄位可直接存入資料庫
protected $fillable = ['flower_id', 'title', 'content'];
public function flower()
{
// 建立跟 Flower 的關聯
return $this->belongsTo('App\Flower');
}
}
路徑:app/Flower.php
填入程式碼
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class Flower extends Authenticatable
{
use Notifiable;
protected $fillable = [
'name', 'email', 'password', 'api_token'
];
public function stone()
{
// 建立跟 Stone 的關聯
return $this->hasMany('App\Stone');
}
// 指定在模型做序列化 ( Serialization ) 給外界讀取時,需要隱藏的資料欄位
protected $hidden = [
'password',
];
}
今天就先建好 model 及 migration 部份,之後再一步一步來。
參考連結:
❁ Laravel 客製化使用者驗證功能-增加使用者資料欄位
❁ Ken 大 - ( Migration )
❁ Ken 大 - 貼文 ( Model ) [ 遇到一個坑 > < ]