我试图通过laravel Eloquement模型获得关系。我有两个模型,分别是Books.php和Magazine.php
在Books.php中我有
public function magazines()
{
return $this->hasMany('App\BOOKS', 'id', 'id');
}
然后我会尝试归还所有与书籍相关的杂志
$books = Book::find(123);
$magazines = $books->magazines()->get();
return $magazines;
但我有NULL杂志!当我添加
时$magazines = $books->magazines()->toSql();
我看到这个选择:选择*来自"杂志"其中"杂志"。" ID"是空的"杂志"。" ID"不是空的 - 它是什么?为什么laravel model put"为null且不为null"?
注意,如果我改变
public function magazines()
{
return $this->belongsToo('App\BOOKS', 'id', 'id');
}
选择将是这样的:选择*来自"杂志"其中"杂志"。" ID"为空 任何人都知道,这是什么?
答案 0 :(得分:1)
您的代码中存在几个问题:
HasMany
将相关模型类作为第一个参数,因此在您的情况下传递App\Book
毫无意义。假设您的杂志模型被称为App\Magazine
Magazine
HasMany
关系说magazines
表上的外键名称。那应该做的工作
public function magazines()
{
return $this->hasMany('App\Magazine', 'book_id', 'id');
}
恕我直言,我建议你在发布之前阅读Laravel文档,有很多例子可以向你解释如何使用关系和数据库表。看看One to Many关系。
修改强>
您可以省略关系中的->get()
,只需抓取您的杂志
$magazines = $books->magazines;
答案 1 :(得分:0)
你应该试试这个:
请更改并尝试:
public function magazines()
{
return $this->hasMany('App\MAGAZINE');
}