2017-07-26 10 views
0

というモデルと、referrer_mediumsテーブルの移行があります。ここで間違ったテーブル名を使用していると間違っている

は私のクラスである:ここでは

namespace App; 

class ReferrerMedium extends \Eloquent 
{ 
    // 
} 

は私の移行である:ここでは

Schema::create('referrer_mediums', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->string('name'); 
}); 

は私のコードです:

foreach (ReferrerMedium::all() as $referrer_medium) { 
    $options[$referrer_medium->name] = $referrer_medium->name; 
} 

このコードはエラーにBase table or view not found: 1146 Table 'leadbind.referrer_media' doesn't exist

を引き起こしています

referrer_mediumsの代わりにreferrer_mediaテーブルを照会しようとしているのはなぜですか?

答えて

3

mediumの複数のタイプがmediaですので、あなたのモデルでは、したがって、あなたが手動で指定する必要があり、テーブル名:

protected $table = 'referrer_mediums'; 

しかし、私は、あなたがテーブル名を変更するには、移行をしなければならないことをお勧めします。

+0

あなたの先進的な情報は優れています!笑ありがとう! – kjdion84

+0

それは私の喜びです。 –

+0

なぜ 'protected 'の前に' $ 'を追加しましたか? – Marty

2

それがそうでなければあなたのようなモデルでテーブル名を定義する必要があり、あなたは複数の名前を持つテーブルを作成し、単数形としてこのテーブルのモデルを作成した場合、そのモデルは、自動的に対応するテーブルを接続する一般的な定義の標準です:

$protected $table = 'referrer_mediums'; 

あなたのケースでは、モデル名はReferrerMediumなので、ReferrerMediumという単数形を検索します。これはreferrer_mediaです。これは問題の原因です。

したがって、referrer_mediaというテーブルを作成するか、上記のようにモデルにテーブル名を定義することができます。

ご理解ください。

関連する問題