モデルを作ってみよう。
前回はマイグレーションの作成をやったので、次はモデルでも作ってみようかなと。
モデル?
アプリケーションの根本的な仕様を形成するのがモデルの役割、だそうな。
モデルの構築の仕方として、大きく分けて物理モデル
と論理モデル
の二つに分かれるそう。
詳しく書くと長くなるので、ここでは割愛します。悪しからず。
早速やってみよう。
マイグレーションと同じく、Artisanコマンド
を使って、
php artisan make:model Posting
と打ちますと、app/
にモデルのファイルが作られます。
最初はこんな感じかな。
namespace App;
use Illuminate\Database\Eloquent\Model;
class Posting extends Model
{
//
}
Posting
というモデルクラスがありますが、その中は空っぽ。
これだと、このモデルがどのテーブルと関連しているか指定されていないように思えます。
実は、テーブル名を明示的に指定しない限り、クラス名を複数形の「スネークケース」にした名前がテーブル名として使用されることになります。
上記のままだと、postings
ということになりますね。
前回、マイグレーションで用意したテーブルはposting
なので、明示的に名前を変更します。
namespace App;
use Illuminate\Database\Eloquent\Model;
class Posting extends Model
{
//モデルと関連しているテーブルの指定
protected $table = 'posting';
}
これでOK。
そして新しいレコードをDBに挿入するには、createメソッド
が使えます。
使用の際は、モデルへfillable
かguarded
のどちらかの属性を設定する必要があるので注意!
//createメソッド実行時に、入力を禁止するカラムの指定
protected $guarded = array('id');
//新規投稿処理
static function addPost($request,$target_id = 0)
{
$post = Posting::create([
'target_id' => $target_id,
'name' => $request['name'],
'comment' => $request['comment'],
'mail_address' => $request['mail_address'],
'password' => $request['password'],
]);
}
よしよし、これでaddPost
の引数にフォームからのリクエスト値を入れてあげれば、DBにレコードができますね。
ついでに編集・削除機能も加えちゃいましょう。
static function editPost($id,$request)
{
Posting::query()->where('id',$id)->update([
'name' => $request['name'],
'comment' => $request['comment'],
'mail_address' => $request['mail_address'],
]);
}
static function deletePost($id,$request)
{
Posting::query()->where('id',$id)->delete();
}
これでレコードの編集・削除もOK!
最初は、フレームワークなしで掲示板制作しましたが、一度フレームワークを使っちゃうとやっぱり便利だなぁって思いますね。。
頼り切っては駄目ですが。笑
あくまで基礎を理解していて、なぜフレームワークがその仕組みになっているのかを理解できてこそ、ですね。
今回はこの辺でm(_ _)m