PHP:Laravel仕様:Model

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
PHP:Laravel仕様:Model [2023/03/02 23:44] – 削除 - 外部編集 (Unknown date) 127.0.0.1PHP:Laravel仕様:Model [2025/04/12 05:15] (現在) – 外部編集 127.0.0.1
行 1: 行 1:
 +# Model
 +
 +### カスタムのテーブル名
 +
 +参考:[雄弁 - Laravelは、データベーステーブルがモデル名の複数形であると想定しています](https://stackoverflow.com/questions/37674309/laravel-assumes-the-database-table-is-the-plural-form-of-the-model-name)
 +
 +デフォルトではテーブル名はモデル名の複数形であると想定されて処理が走る。
 +
 +しかし、テーブル名が「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とは?ローカルとグローバルの違い](https://tech.amefure.com/php-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によるデータ取得
 +    }
 +}
 +```