Laravel 不';拉威尔的工作关系
我有两种型号:Laravel 不';拉威尔的工作关系,laravel,eloquent,relationships,Laravel,Eloquent,Relationships,我有两种型号: class Announcement extends Eloquent { public function characteristics() { $this->hasMany('Characteristic'); } } 和特点: class Characteristic extends Eloquent { protected $guarded = array(); public static $rules = array(); pu
class Announcement extends Eloquent {
public function characteristics() {
$this->hasMany('Characteristic');
}
}
和特点:
class Characteristic extends Eloquent {
protected $guarded = array();
public static $rules = array();
public function announcement() {
return $this->belongsTo('Announcement');
}
}
有两张桌子:
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
);
及
这两种方法都添加了一些测试数据
这是我在routes.php中的代码:
Route::get('/', function()
{
$test = Announcement::find(1)->characteristics();
var_dump($test);
});
但我总是得到零。我不明白,为什么…试着这样做:
public function characteristics() {
return $this->hasMany('Characteristic','announcement_id');
}
public function announcement() {
return return $this->belongsTo('Announcement','announcement_id');
}
函数名是表的名称。第一个参数是模型名,第二个参数是匹配的键名
此外,为了获得良好的实践效果,请在公告id中添加外键
$table->foreign('announcement_id')->references('id')->on('announcements')->onDelete('cascade');
还可以尝试以下查询:
$test = Announcement::find(1)->characteristics; //not a method name
您必须返回$this->hasMany('Characteristic','announcement_id')
您错过了退货。没有,我不工作。。。我已经将其添加到我的createcharacteristics_表迁移中:$table->foreign('announcement_id')->references('id')->on('announces')->onDelete('cascade');但是没有任何区别。当我编辑它时:$test=Announcement::find(1)->characteristics//不是方法名我遇到错误“对非对象调用成员函数getResults()”
$test = Announcement::find(1)->characteristics; //not a method name