Php Laravel关系返回NULL

Php Laravel关系返回NULL,php,laravel,eloquent,laravel-5.4,laravel-eloquent,Php,Laravel,Eloquent,Laravel 5.4,Laravel Eloquent,我试图通过拉威尔私奔模型来建立关系。我有两个模型,分别是Books.php和Magazine.php 在Books.php中,我有 public function magazines() { return $this->hasMany('App\BOOKS', 'id', 'id'); } 然后我试着归还所有与书籍有关的杂志 $books = Book::find(123); $magazines = $books->magazines()->get(); retur

我试图通过拉威尔私奔模型来建立关系。我有两个模型,分别是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;
但我有空杂志!当我添加

$magazines = $books->magazines()->toSql();
我看到这个选择:从“杂志”中选择*,其中“杂志”。“ID”为空,“杂志”。“ID”不为空。-它是什么?为什么laravel模型put“为空且不为空”

注意,如果我在找零钱

public function magazines()
{
    return $this->belongsToo('App\BOOKS', 'id', 'id');
}
选择方式如下:从“杂志”中选择*,其中“杂志”。“ID”为null 有人知道这是什么吗?

你应该试试这个:

请更改并尝试:

public function magazines()
{
    return $this->hasMany('App\MAGAZINE');
}

您的代码中有几个问题:

  • HasMany
    将相关模型类作为第一个参数,因此在您的情况下,传递
    App\Book
    是毫无意义的。您应该通过
    App\Magazine
    ,假设您的杂志型号为
    Magazine
  • 您不是在对
    HasMany
    关系说
    表上的外键名称是什么
这应该可以完成任务

public function magazines()
{
    return $this->hasMany('App\Magazine', 'book_id', 'id');
}
在这里发布之前,我建议您阅读Laravel文档,这里有很多示例将向您解释如何使用关系和数据库表。看看人际关系

编辑

您可以省略关系中的
->get()
,只需取出您的杂志即可

$magazines = $books->magazines;

我认为你们的关系没有意义。为什么一本书有很多书?难道一本书不应该属于任何杂志吗?我想你在这段关系中提到的阶级是不存在的。尝试将您在
hasMany
中引用的类从
App\Book
更改为
App\Book
。朋友们,这就是一个例子。。真正的表位于Oracle中,有许多列和行。但是我认为查询的结构不正确。。为什么模型put为空?查询结构不正确,因为关系不正确。修复关系将修复查询。此模型laravel为项目自动生成当我更改模型类时,表的名称已更改,但“不为null且为null”仍在查询中自动生成的方法仅为存根,您必须始终修改它以反映正确的数据库结构。您是否更改了将外键添加为第二个参数和本地键添加为第一个参数的方法?然后检查数据库和模型定义中的所有内容是否正确否,我有不同的外键和主键_id@KonstantinMokhov请提供详细资料