参考:雄弁 - 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によるデータ取得 } }