

お世話になります。Laravel初心者です。  
別で作成されたLaravel8のプログラムを改修しています。  
DBで既存のdtb_productというテーブルがあり

php artisan make:model DtbProduct

でModelを作成しました。  
コントローラーで

use App\Models\DtbProduct;

を追加し、

[code]

    $product = DtbProduct::find(1022);
    
[/code]

と実行したところ

**SQLSTATE[42S02]: Base table or view not found: 1146 Table
'shareef_dev.dtb_products' doesn't exist**

とエラーが出ます。  
試しに

[code]

    $product = \DB::table('dtb_product')->find(1022);
    
[/code]

としたところ問題なくテーブルの内容が取得されます。

問題点は  
**dtb_product → dtb_productsとsがついてしまう**
点なのですが、Laravelの全ファイルを調べてもdtb_productsとsがついている部分はありませんでした。

どの辺を確認すればよいかもわからないため、お分かりの方教えていただけないでしょうか。  
よろしくお願いいたします。


CC BY-SA 4.0
2023-04-08T02:34:10.580
94443
2023-04-10T01:32:11.010
23604
question
laravel
laravel既存テーブルのModelを作成するとテーブル名にsがつく


自己解決しました。

[Laravelのドキュメント](https://laravel.com/docs/8.x/eloquent#table-names) の Eloquent
Model Conventions > Table Names にありました。  
Model の dtb_product.php に以下の記述を追加することでうまくいきました。

[code]

    protected $table = 'dtb_ptoduct';
    
[/code]


CC BY-SA 4.0
2023-04-08T03:41:22.337
94447
2023-04-10T01:32:11.010
2023-04-10T01:32:11.010
3060
23604
94443
answer