建立註冊的畫面及功能(七) - 資料庫的操作
Laravel提供Eloquent ORM Model方便我們存取資料表的資料,
一個Eloquent ORM Model的檔案只能對應到一個資料表,
我們目前建立了users, mind, board三個資料表.
Laravel限制專案的檔案需要放在app/目錄底下,
不過底下的目錄結構沒有限制,
我們把所有的ORM Model都放在app/Entity目錄底下.
接下來我們新增ORM檔案,
app/Entity/User.php
<?PHP
namespace App\Entity;
use Illuminate\Database\Eloquent\Model;
class User extends Model {
//資料表名稱
protected $table = 'users';
//主鍵名稱
protected $promaryKey = 'id';
//可變動欄位
protected $fillable = [
'name',
'account',
'password',
'type',
'sex',
'height',
'weight',
'interest',
'introduce',
'picture',
'enabled',
];
}
?>
檔案內容是根據我們之前建立的資料庫,
ORM檔案必須繼承Illuminate\Database\Eloquent\Model,
$table是檔案名稱,
$fillable是我們會去修改的欄位,
基本上id我們設定自動增加,
created_at跟updated_at這兩個欄位Laravel會自己處理,
其他的欄位都要寫進去,
否則即使有值也無法更新到資料庫.
接下來我們在app/Http/Controllers/UserAuthController底下的signUpProcess方法後面加入一行,
User::create($input);
透過Laravel的Model將資料新增到資料庫中,
當然前面要加上
use App\Entity\User;
signUpProcess方法的完整內容如下
//處理註冊資料
public function signUpProcess()
{
//接收輸入資料
$input = request()->all();
//驗證規則
$rules = [
//暱稱
'name' => [
'required',
'max:50',
],
//帳號(E-mail)
'account' => [
'required',
'max:50',
'email',
],
//密碼
'password' => [
'required',
'min:5',
],
//密碼驗證
'password_confirm' => [
'required',
'same:password',
'min:5'
],
];
//驗證資料
$validator = Validator::make($input, $rules);
if($validator->fails())
{
//資料驗證錯誤
return redirect('/user/auth/sign-up')
->withErrors($validator)
->withInput();
}
$input['password'] = Hash::make($input['password']);
User::create($input);
var_dump($input);
exit;
}
我們再回到表單操作就能夠將資料寫到資料庫中了.
這樣透過Laravel的Model我們存取資料庫就變得很容易了.
接下來我們再把另外兩個Model檔案也完成,
後面就可以直接拿來使用了.
app/Entity/Mind.php
<?PHP
namespace App\Entity;
use Illuminate\Database\Eloquent\Model;
class Mind extends Model {
//資料表名稱
protected $table = 'mind';
//主鍵名稱
protected $promaryKey = 'id';
//可變動欄位
protected $fillable = [
'user_id',
'content',
'enabled',
];
}
?>
app/Entity/Board.php
<?PHP
namespace App\Entity;
use Illuminate\Database\Eloquent\Model;
class Board extends Model {
//資料表名稱
protected $table = 'board';
//主鍵名稱
protected $promaryKey = 'id';
//可變動欄位
protected $fillable = [
'user_id',
'email',
'picture',
'content',
'enabled',
];
}
?>