在belongsTo上使用withDefault()会导致错误

时间:2017-07-12 00:20:28

标签: laravel eloquent

public function featuredimage()
{
    return $this->belongsTo(Image::class, 'featured_image_id')->withDefault();
}

这让我:在模型[App \ Models \ Core \ Blog \ Post]上调用未定义的关系[featuredimage]。

任何想法为什么?

它应该按照文档工作:

https://laravel.com/docs/5.4/eloquent-relationships#updating-belongs-to-relationships

  

默认模型

     

belongsTo关系允许您定义默认模型   如果给定的关系为null,则返回。这种模式是   通常称为Null对象模式,可以帮助删除   代码中的条件检查。在以下示例中,用户   如果没有附加用户,关系将返回一个空的App \ User模型   到帖子:

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

我的laravel版本:5.4.27

我有两张桌子:

发布表格和图片表

在帖子表中我这样做:

$table->biginteger('featured_image_id')->nullable()->unsigned();

$table->foreign('featured_image_id')->references('id')->on('images')->onUpdate('cascade')->onDelete('cascade');

1 个答案:

答案 0 :(得分:1)

我有同样的问题。您需要升级到最新的laravel版本,因为Callout View方法可以从5.4.28开始。

要更新,只需运行:

withDefault