2014-07-09 6 views
0

Я хочу, чтобы сохранить маркер в моей таблице лексем:Laravel: Не удается сохранить данные в таблицу

Мой магазин-метод моего TokenController.php выглядит следующим образом:

public function store() { 

    $user = Sentry::getUser(); 
    $user = User::with('tokens')->where('id', $user->id)->first(); 

    Token::create([ 
     'user_id'  => $user->id, 
     'name'  => Input::get('tokenname'), 
     'description' => 'whatever', 
     'tag'   => 'whatever1', 
    ]); 

Вот мой Таблица, на мой взгляд, который посылает данные в магазин-метод:

<table> 
    {{Form::open(array('route' => array('admin.referencing.store', $user->id), 'method' => 'POST', 'id'=>'tokenCreateForm'))}} 

     <div class="form-group"> 
      {{ Form::input('number', 'numberoftokens', false, array('placeholder' => 'Number of Tokens', 'id' => 'numberoftokens')) }} 
     </div> 

     <div class="form-group"> 
      {{ Form::input('text', 'tokenname', false, array('placeholder' => 'Name of Token', 'id' => 'tokenname')) }} 
     </div> 

     <div class="form-group"> 
      {{ Form::input('text', 'tokendescription', false, array('placeholder' => 'Description', 'id' => 'tokendescription')) }} 
     </div> 

     <div class="form-group"> 
      {{ Form::input('text', 'tokentag', false, array('placeholder' => 'Tag', 'id' => 'tokentag')) }} 
     </div> 

     <div class="form-group"> 
      <button class="btn btn-primary" type="submit"> 
       <i class="fa fa-save"></i> 
       Create 
      </button> 
     </div> 

    {{Form::close()}} 
    </table> 

И это как моя база данных выглядит как (мой Идентификаторы миграции)

public function up() 
{ 
    Schema::create('tokens', function(Blueprint $table) 
    { 
     $table->increments('id'); 
     $table->integer('user_id')->unsigned()->index(); 
     $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 
     $table->string('name', 60)->index(); 
     $table->string('description'); 
     $table->string('tag'); 
     $table->timestamps(); 
    }); 
} 

Что странно, что мой Seedfile сохраняет все прекрасно в моей таблице:

Мой TokenTableSeeder:

class TokenTableSeeder extends Seeder { 

    public function run() 
    { 
     $faker = Faker::create(); 

     Token::truncate(); 

     foreach(range(1, 10) as $index) 
     { 
      Token::create([ 
       'user_id'  => rand(1,4), 
       'name'  => $faker->country, 
       'description' => $faker->name, 
       'tag'   => rand(1,4) 
      ]); 
     } 
    } 

} 

Таким образом, это действительно странно, потому что NAME будет сохранен полностью, но не «description», а не «тег», так что после того, как моя сеялка будет готова, и я вручную создаю токены, все будет сохранено, кроме описания и тега.

Вот как это выглядит:

http://i.imgur.com/x3dRF6d.jpg

Похоже, что должно быть только слово написано неправильно, но я проверил это в сто раз и не могу найти причину, почему не сохраняется.

Любая помощь очень ценится.

Уважением,

Джордж

+1

Просто удар в темноте ... Вы определили свойство '$ fillable' в модели Token? ([Документация] (http://laravel.com/docs/eloquent#mass-assignment)). Я не знаю, почему это будет работать для посева, но не для производственного кода, но, возможно, посев работает иначе? – Kryten

+0

Спасибо. Это происходит, если вы работаете с кодом, который ранее был произведен кем-то другим. Не могли бы вы написать свой комментарий как решение, потому что я хотел бы проверить его как правильно. Это действительно была Модель, которая обладала свойствами статического заполнения. Большое спасибо. – LoveAndHappiness

+1

сделаю. Рад, что смог помочь. – Kryten

ответ

1

Для того, чтобы использовать метод create на модели, свойства которого вы хотите установить, должны быть назначены с fillable собственности. Here's the documentation.

Я не знаю, почему это будет работать для посева, но не для производственного кода. Возможно, посев каким-то образом обходит метод create и просто записывает значения в базу данных напрямую.

Смежные вопросы