2016-03-22 15 views
0

Ich habe einige Modelle gehören zu Activity Model.laravel 4 hasOne/hasMany/belongsTo funktioniert nicht

in meinem Activity.php hatte ich

<?php 

class Activity extends \Eloquent { 
    protected $fillable = []; 

    public function activity_car_nums() 
    { 
     return $this->hasMany('ActivityCarNum'); 
    } 

    public function newables() 
    { 
     return $this->hasMany('Newable'); 
    } 

    public function serial_codes() 
    { 
     return $this->hasMany('SerialCode'); 
    } 

    public function applys() 
    { 
     return $this->hasMany('Apply'); 
    } 

} 

und in SerialCode.php hatte ich

<?php 

class SerialCode extends \Eloquent { 
    protected $fillable = ['code']; 

    public function activity() 
    { 
     return $this->belongsTo('Activity'); 
    } 
} 

und in meinem Controller, wenn ich

$serial_codes = []; 
while(count($serial_codes) < $serial_code_total) 
{ 
    $code = substr(md5(uniqid(rand(), true)),0,5); 
    $serial_code = new SerialCode(['code' => $code]); 

    if(!in_array($serial_code, $serial_codes)) 
    { 
     $serial_codes[] = $serial_code; 
    } 
} 

$activity->serial_codes()->saveMany($serial_codes); 

schrieb er arbeitet .

Aber wenn es wendet sich an

//this can get activity object 
$activity = Activity::find($id); 

//this can get the serial codes of the object above. 
$serial_codes = SerialCode::whereActivityId($id)->get(); 

//this don't work, it returns null 
$serial_codes = $activity->serial_codes; 

denn ich weiß wirklich nicht, warum ...

jemand mir bitte helfen kann, und sorry für mein schlechtes Englisch. Danke. (Wenn Sie einen Code benötigen sonst bitte sagen Sie mir.)

+0

Ich habe andere 2 Modelle, die als hasOne assoziieren und gehört zu Beziehung, und ich kann nichts über die Abfrage von Orm bekommen, auch wenn auch Daten drin sind. –

+0

Können Sie SerialCode- und Aktivitätsmodelle veröffentlichen? – Laerte

+0

@Laerte I aktualisiert auf meine Frage :) –

Antwort

0

fand ich den Grund, warum meine Modell-Abfrage kann nicht funktionieren, weil die „_“ in Funktionsnamen.

ändern, nur

public function serial_codes() 

zu

public function serialcodes() 

dann wird alles gut gehen.

Vielen Dank an alle.

0

mein Modellcode:

<?php 
namespace App; 
use Illuminate\Database\Eloquent\Model; 
use DB; 
class Product extends Model 
{ 
    public $table="s_products"; 
    protected $primaryKey = 'product_id'; 
    public function reviews() 
     { 
      return $this->hasMany('App\ProductReview'); 
     } 
    public function attributes() 
    { 
     return $this->hasMany('App\AttributeMapping'); 
    }   
    public function images() 
     { 
      return $this->hasMany('App\Image'); 
     } 
} 
+0

sollte ich alle modelle durch hinzufügen von' namespace App; verwenden Illuminate \ Database \ Eloquent \ Model; verwenden DB; Klasse MyModel erweitert Model '??? –

+0

Nachdem ich alle Modelle so geändert habe, habe ich ** Class 'Activity' nicht gefunden ** mit '$ activities = Activity :: latest() -> get();' –

+0

@hubuki benutze transfromer – KarnaGowtham