2016-03-22 5 views
0

У меня есть некоторые модели, относящиеся к Activity Model.laravel 4 hasOne/hasMany/принадлежитTo не работает

в моем Activity.php я имел

<?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'); 
    } 

} 

и SerialCode.php, я имел

<?php 

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

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

и в мой контроллер, когда я писал

$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); 

это работает ,

Но когда он поворачивается к

//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; 

ибо я действительно не знаю, почему ...

Может кто-нибудь помочь мне, пожалуйста, и простите за мой плохой английский. Спасибо. (если вам нужен какой-либо код еще скажите, пожалуйста.)

+0

У меня есть другие 2 Модели, которые ассоциируются как hasOne и относятся к отношениям, и я не могу получить что-либо через orm-запрос, даже если есть данные внутри. –

+0

Можете ли вы опубликовать модели SerialCode и Activity? – Laerte

+0

@ Laerte Я обновил свой вопрос :) –

ответ

0

Я нашел причину, что почему моя модель запрос не может работать, потому что «_» в функции имени.

просто изменить

public function serial_codes() 

в

public function serialcodes() 

тогда все будет хорошо.

Спасибо всем.

0

мой код модели:

<?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

следует изменить всю модель, добавив' namespace App; использование Illuminate \ Database \ Eloquent \ Model; DB; класс MyModel расширяет модель' ??? –

+0

После того, как я изменил всю модель, я получил ** Класс «Активность» не найден ** с помощью '$ activities = Activity :: latest() -> get();' –

+0

@hubuki im, используя трансфромер – KarnaGowtham

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