Laravelの基本的な部分が忘れてきたので、記述する
モデルの考え方や基本的な使い方
1. **テーブル名の指定**:
protected $table = 'my_table';
この行は、モデルがどのデータベーステーブルと関連付けられているかを指定します。ここでは、`my_table`というテーブルと関連付けています。Laravelの命名規則に従っていれば、通常は自動的にテーブル名が推測されますが、テーブル名が異なる場合にはこのプロパティで指定することができます。
2. **プライマリキーの指定**:
```php
protected $primaryKey = 'custom_id';
```
この行は、モデルが使用するプライマリキーを指定します。デフォルトでは`id`カラムがプライマリキーとして想定されますが、`custom_id`などの他のカラムをプライマリキーとして使用する場合には、このプロパティで指定します。
3. **複数代入を許可するカラム**:
※追加実装する場合は$fillableに使用したいカラム名を記述する必要があるので忘れずに
```php
protected $fillable = ['column1', 'column2', 'column3'];
```
この行は、複数代入(Mass Assignment)を許可するカラムを指定します。ユーザーからの入力データをまとめてモデルに保存する際に使用されます。ここで指定されたカラムに対しては、ユーザーからの入力が自動的に許可されます。
4. **タイムスタンプカラムの自動更新**:
```php
public $timestamps = true;
```
この行は、モデルが`created_at`と`updated_at`という2つのタイムスタンプカラムを自動的に更新するかどうかを指定します。デフォルトでは`true`に設定されており、モデルを作成・更新した日時が自動的に記録されます。不要な場合には`false`に設定できます。
これらのモデルのプロパティは、データベーステーブルとの連携やデータの操作を簡素化し、コードの可読性と保守性を向上させるのに役立ちます。モデルはLaravelのORM(Eloquent)の一部であり、データベースとの対話をオブジェクト指向的に行うための強力なツールです。
以下モデルの基本的なコード
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class MyModel extends Model
{
protected $table = 'my_table'; // データベーステーブル名
protected $primaryKey = 'id'; // プライマリキー名(デフォルトは'id')
protected $fillable = ['column1', 'column2', 'column3']; // 複数代入を許可するカラム
※新規実装する場合も追加実装する場合も$fillableに使用したいカラム名を記述する必要があるので忘れずに
public $timestamps = true; // タイムスタンプカラムの自動更新(デフォルトでtrue)
// リレーションシップの定義
public function relatedModel()
{
return $this->belongsTo(RelatedModel::class);
}
// クエリスコープの定義
public function scopeActive($query)
{
return $query->where('status', 'active');
}
// その他のカスタムメソッドやプロパティを追加できます
}