2016-04-14 31 views
3

name ve query alanından oluşan basit bir Model IsolatedQuery kullanıyorum. Bu iki alanı, modelin $fillable özelliğinde tanımladım. IsolatedQueryController @ mağaza şuna benzer:

Bütünlüğü için
public function store(IsolatedQueryRequest $request) 
{ 
    IsolatedQuery::insert($request->all()); 

    session()->flash('flash_message', 'Isolated Query succesvol opgeslagen'); 

    return redirect('iq'); 
} 

, burada Model'in kaynağıdır IsolatedQueryRequest sadece olmak hem name ve query gerektirir

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class IsolatedQuery extends Model 
{ 
    protected $fillable = [ 
     'name', 
     'query' 
    ]; 
} 

(o sana anlattığım kadar az olduğu) herhangi bir değerle dolu.

Verilen bir ad ve sorgu değeriyle store yöntemini çağırırken hata iletisini alıyorum: SQLSTATE[42S22]: Column not found: 1054 Unknown column '_token' in 'field list'.

_token alanın isteği ile gönderileceği aşikar ama neden bu kadar gerçek bir SQL sorgusuyla depolamaya çalıştığını biraz şaşırtmış durumdayım $fillable dizisinde listelenmiyor.

Neden kütle atandı?

+0

Olası kopyası [Laravel 5.2 $ doldurulabilir] (http://stackoverflow.com/questions/34864666/laravel-5-2-fillable) – bishop

+0

@bishop Bu bir kopya değil, bu soru neden olduğunu ve nedenini soruyor sen buna cevap vermiyorsun. Ayrıca, bu soru doldurulan mülkiyeti kullanmak, diğeri ise onu kullanmayla ilgili. –

+0

Gerçekten bir kopya değil. '$ Request-> all() 'i uygulamak istiyorum,' $ request-> only'ı çağırmak yerine mümkün olmalıdır. Eğer isteseydim kitle atanabilir listeyi '$ doldurulabilir 'ile tanımlamak zorunda kalmazdım. – Ben

cevap

3

Query Builder'ın yöntemini insert kullanın. fillable'u kontrol etmiyor.
Eloquent'in create veya update yöntemini kullanmalısınız.
Lütfen, documentation'u okuyun. Ayrıca, giriş verilerini Eloquent için construct veya fill yöntemine de geçirebilirsiniz. Bundan sonra save yöntemini kullanabilirsiniz.

+0

Ne kadar yumuşak bir şekilde .. Tamamen baktım ... Teşekkürler! + 1A – Ben

+0

Biri ayrıca ['Eloquent :: fill()'] kullanabilir (https://github.com/laravel/framework/tree/master/src/Illuminate/Database/Eloquent/Model.php#L428-L454) IMO 'yaratmak' ve' update' niyetini daha açık bir şekilde ifade etse de. – bishop

+0

Yani bir kez eklemek için büyük bir veri olduğunda ne yapacağız? içinden döngü yapmak ve yöntem kullanmak hiç verimli değil – wahdan