I've got two models Announcement:
class Announcement extends Eloquent {
public function characteristics() {
$this->hasMany('Characteristic');
}
}
and Characteristic:
class Characteristic extends Eloquent {
protected $guarded = array();
public static $rules = array();
public function announcement() {
return $this->belongsTo('Announcement');
}
}
There's two tables:
CREATE TABLE characteristics (
id integer PRIMARY KEY AUTOINCREMENT,
title varchar DEFAULT('Количество'),
announcement_id integer,
count integer DEFAULT('0'),
value_name varchar DEFAULT('шт.'),
created_at datetime,
updated_at datetime,
deleted_at datetime
);
and
CREATE TABLE announcements (
id integer PRIMARY KEY AUTOINCREMENT,
title varchar DEFAULT(''),
description varchar DEFAULT(''),
created_at datetime,
updated_at datetime,
deleted_at datetime
);
Both of them are seeded with some test data.
This is my code in routes.php:
Route::get('/', function()
{
$test = Announcement::find(1)->characteristics();
var_dump($test);
});
But I Always got NULL. I can't understand, why...
You have to return the $this->hasMany('Characteristic', 'announcement_id');
You are missing the return.