Php Laravel ELOTUENT belongsto关系返回null

Php Laravel ELOTUENT belongsto关系返回null,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我有两个雄辩的模型: 1) 职位 2) 产品 我需要从邮局得到产品 我这样做: $posts = Post::get(); foreach($posts as $key){ dd($key->product); } 像这样,它返回NULL 如果我喜欢这个: dd($key->product()) 我有这个产品,但我不能使用它 但我需要这样的东西来使用我需要的东西: 试着指出foregin键和其他相关键,例如: public function post() { retu

我有两个雄辩的模型:

1) 职位

2) 产品

我需要从邮局得到产品 我这样做:

$posts = Post::get();

foreach($posts as $key){
    dd($key->product);
}
像这样,它返回NULL 如果我喜欢这个:
dd($key->product())
我有这个产品,但我不能使用它

但我需要这样的东西来使用我需要的东西:


试着指出foregin键和其他相关键,例如:

public function post()
{
    return $this->belongsTo('App\Post', 'foreign_key', 'other_key');
}

public function user()
{
    return $this->belongsTo('App\User', 'foreign_key', 'other_key');
}

更多信息:

数据库中可能不存在该关系

根据
Post
上的
filleble
数组,关系设置的方式看起来是正确的,因为您遵循了键的命名约定,并且
belongsTo
关系方法具有正确的约定名称

$post->product()。它正在返回一个
关系
类型对象(
BelongsTo
)。这用于查询关系
$post->product
将是关系的动态属性,它将返回已加载的关系或加载关系并给出结果

如果关系设置正确
$post->product
null
将意味着数据库中实际上不存在该关系,则
产品中的
id
不匹配
产品id
产品id
为null。(假设没有外键约束)

旁注:急切地加载关系将是一个好主意:

$posts = Post::with('product')->get();
我发现了我的问题 我在ID=1的DB产品中没有 :/ 愚蠢的问题


感谢所有来自美国的帮助。

我刚刚看到这篇文章,因为我在一个项目中遇到了类似的错误

我发现,当使用all()方法查询模型时,它会忽略相关的softdeleted行

当您尝试访问它们时,会得到空值

记住在关联和解除关联后点击save()。给了我几次机会:

$model->relation()->associate($record)->save();

应该有用。尝试用其他键更改外键。我确信问题就在这一点上。OP随后出现,因此他不需要在关系定义中定义FK和PK。我不知道,有时我已经遵循了Laravel外键名称的名称约定,但它仍然返回了
null
,其中
belongsTo
关系。在型号名称后提及外键可修复此问题。谢谢。你的产品表中有
post\u id
列吗?如果不是';t将外键传递给Post,将外键名称作为第二个参数传递给Post中的
product
方法model@linktoahref在
posts
表上有
product\u id
,至少它看起来像是基于
Post
上的
filleble
,我尝试它仍然是空的,我将文件上传到数据库中,因此如果您认为我有问题,请告诉我:/t链接数据库中不存在这种关系
$posts = Post::with('product')->get();
$model->relation()->associate($record)->save();