2015-11-04 3 views
0

У меня есть таблица категории, которая содержит:Как сделать Laravel ORM реляционных баз данных

Schema::create('categories',function($table){ 
    $table->increments('id'); 
    $table->string('name',25); 
    $table->timestamps(); 
}); 

и продуктов таблицы:

Schema::create('products',function($table){ 
    $table->increments('id'); 
    $table->integer('category_id')->unsigned(); 
    $table->foreign('category_id')->references('id')->on('categories'); 
    $table->string('name',25); 
    $table->text('description'); 
    $table->timestamps(); 
}); 

и product_image:

Schema::create('images',function($table){ 
    $table->increments('id'); 
    $table->integer('product_id')->unsigned(); 
    $table->foreign('product_id')->references('id')->on('products'); 
    $table->string('src',100); 
    $table->timestamps(); 
}); 

И мои модели:

Категория:

class Category extends Eloquent{ 
    public function Test() { 
     return $this->hasMany('Product'); 
    } 
} 

продукт:

class Product extends Eloquent 
{ 
    public function category(){ 
     return $this->belongsTo('Category'); 
    } 

    public function images() { 
     return $this->hasMany('Images'); 
    } 
} 

Теперь я хочу, чтобы показать каждую категорию в DIV с первой фотографией продукта.

Route::get('test',function(){ 
    $category = Category::all(); 
    foreach($category as $cat){ 
     dd($cat->Test->first()->images->first()->src); 
    } 
}); 

, но я получаю эту ошибку:

Trying to get property of non-object 

Может ли один помочь мне, почему я получаю эту ошибку?

ответ

1

Вы пропустили() при вызове realtion.

dd($cat->test()->first()->image()->first()->src); 
+0

Я изменяю, но все еще имею ту же ошибку. И также dd ($ cat-> Test-> first()); имеет возврат NULL – user2647541

+0

вы уверены, что в таблице есть записи? и убедитесь, что имя таблицы изображений - это изображения –

+0

также вы можете попробовать переименовать Test() для имени метода test(), всегда следует начинать с нижнего регистра, его хорошее соглашение –

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