2017-04-20 6 views
1

Dieses Modell verhält sich nicht ordnungsgemäß. Es füllt weder seine Attribute aus, noch kann ich find(), get() oder irgendeine Art von Getter aufrufen. HierFehler beim Erstellen und Abrufen des Modells

ist es create_matches_table:

public function up() 
{ 
    Schema::create('matches', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('p1'); 
     $table->integer('p2'); 
     $table->integer('u1'); 
     $table->integer('u2'); 
     $table->string('p1_action')->nullable(); 
     $table->string('p2_action')->nullable(); 
     $table->bigInteger('clock')->unsigned(); 
     $table->smallinteger('round')->unsigned()->default('1'); 
     $table->integer('victor')->nullable(); 
     $table->boolean('murder'); 
     $table->integer('wager')->unsigned()->nullable(); 
     $table->integer('notoriety')->nullable(); 
     $table->integer('stalemate')->default('0'); 
     $table->timestamps(); 
     $table->datetime('finished_at')->nullable(); 
    }); 
} 

Match::create($data) Mit dem $data ist ein Array von Attributen perfekt mit denen Schlange benötigt wird, sie nicht ausfüllen Das zurückgegebene Objekt hat nie ein clock Attribut wie oben gewünscht..

Ich habe umschifft begrudgingly diese Probleme durch die Verwendung:

public static function setMatch($data) 
{ 

    $match = new Match; 
    $match->fill($data); 
    $match->clock = time() + 6; 
    $match->save(); 

    return $match; 
} 

Auch dies tun, versuchen, einen bestimmten Datensatz dieses Objekts zu erhalten, indem $match = Match::find([$id])->first(); ergibt diesen Fehler:

SQLSTATE[HY000]: General error: 2031 (SQL: select * from matches where matches . id in (?)) in Connection.php line 729

at 
> Connection->runQueryCallback('select * from `matches` where 
> `matches`.`id` in (?)', array(), object(Closure)) in Connection.php 
> line 685 at Connection->run('select * from `matches` where 
> `matches`.`id` in (?)', array(), object(Closure)) in Connection.php 
> line 349 at Connection->select('select * from `matches` where 
> `matches`.`id` in (?)', array(), true) in Builder.php line 1610 

Ich habe versucht, Werte hart zu codieren, sie als ein Array zu übergeben und sogar nur für Match::first() zu gehen, und alle geben diesen Fehler zurück.

Alles, was ich brauche, ist, dass sich das wie ein normales ol-Modell verhält.

+0

Konfigurieren Sie Ihre Datenbankeinstellungen? –

Antwort

2

Ketten Sie nicht first() nach find() seit find() gibt ein Objekt:

Match::find($id); 

Stellen Sie außerdem sicher $fillable richtigen Attribute und define a mutator für clock Attribut create() Arbeit zu machen hat:

public function setClockAttribute($value) 
{ 
    $this->attributes['clock'] = time() + 6; 
} 
+0

Anstatt '$ fillable' zu ​​verwenden, habe ich' $ guarded = ['id', 'created_at'] 'versucht. Nachdem dies behoben wurde (und die Abfrage-Builder-Kette repariert wurde), funktionierte es einwandfrei. Es war der '$ bewacht', der diesen Fehler verursachte. – Naltroc

0

Ich denke, Ihr Code muss aktualisiert werden wie:

Match::find([$id])->first();

Um

Match::find($id);

Oder

Match::where('id',$id)->first();

Hoffnung diese Arbeit für Sie!

Verwandte Themen