目次

Model

カスタムのテーブル名

参考:雄弁 - Laravelは、データベーステーブルがモデル名の複数形であると想定しています

デフォルトではテーブル名はモデル名の複数形であると想定されて処理が走る。

しかし、テーブル名が「news」の場合があるが、無理にモデルを「new」にする必要はない。

下記のようにモデルでカスタムテーブルを宣言すれば問題ない。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class News extends Model
{
/**
 * The table associated with the model.
 *
 * @var string
 */
protected $table = 'news';
}

スコープ

参考:【Laravel】Eloquent(エロクアント)のscopeとは?ローカルとグローバルの違い

モデルクラスにスコープと呼ばれるメソッドを定義することで、データベースから取得するデータの範囲をすることができる。

class User extends Model
{
    use HasFactory;

    public function scopeOverId($query,$num)
    {
        return $query->where('id',$num);  // Userモデルのコレクションが返る
    } 
}

class appController extends Controller
{
    public function index(Request $request)
    {
        $records = User::overId(5);  // scopeによるデータ取得
    }
}