模型上的SoftDeletes破坏了动态特性

miken32

TLDR:当SoftDeletes特征包含在父模型中时,我不再将父模型的软删除实例作为子代的动态属性。如何才能做到这一点?


我定义了几个基本模型,如下所示:

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Builder;

class User extends Model
{
    use SoftDeletes;

    public function posts()
    {
        return $this->hasMany("App\Post");
    }
}

class Post extends Model
{
    public function user()
    {
        return $this->belongsTo("App\User");
    }

    public function scopePending(Builder $query)
    {
        return $query->whereNull("pending");
    }
}

在我的控制器中,我想列出待处理的帖子,所以我这样做:

<?php
namespace App\Controllers;

use App\Post;

class PostController extends Controller
{

    public function index()
    {
        $posts = Post::pending()->get();
        return view("post.index", ["pending"=>$posts]);
    }
}

最后,在我看来:

@foreach($pending as $post)
    {{ $post->title }}<br/>
    {{ $post->user->name }}<br/>
@endforeach

这导致抛出异常,“试图获取非对象的属性”,其行号与我尝试为$post->user->name已被软删除的用户尝试输出的位置相对应

如何使这些动态属性包括软删除的项目?

jedrzej.kurylo

显然,相关用户模型已被软删除,这就是为什么不加载相关用户的原因。

像下面的代码中那样定义关系,无论用户是否被软删除,您始终可以获取用户:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多个视图模型破坏了基因敲除

来自分类Dev

fgetcsv / fputcsv $ escape参数从根本上破坏了

来自分类Dev

使用Cocoapods 1.0在Framework项目上破坏了Interface Builder

来自分类Dev

同样地,6.1在Ubuntu 10.04.3上破坏了网络

来自分类Dev

PostgreSQL在Ubuntu上破坏了apt-get

来自分类Dev

PageTabViewStyle破坏了NavigationView

来自分类Dev

自定义模型管理器被prefetch_related破坏了

来自分类Dev

SwiftMailer破坏了带有动态内容的附件(使用山d)

来自分类Dev

自定义车把助手破坏了模板的动态性质

来自分类Dev

嵌套的SplitContainers破坏了SplitterWidth

来自分类Dev

我破坏了封装吗?

来自分类Dev

.htaccess破坏了我的网站

来自分类Dev

InstallShield破坏了TFS构建

来自分类Dev

wget破坏了内容的配置

来自分类Dev

Serilog破坏了多个日志?

来自分类Dev

PHP输出破坏了Javascript

来自分类Dev

我已经破坏了Ubuntu!

来自分类Dev

添加ManytoManyField破坏了Django

来自分类Dev

导航被display:inline破坏了

来自分类Dev

Tkinter破坏了Toplevel的根源

来自分类Dev

PHP破坏了我的代码

来自分类Dev

icacls破坏了胜利10

来自分类Dev

Firebase模块破坏了Aurelia

来自分类Dev

扩展的 JPanel 破坏了 GridLayout

来自分类Dev

Bootstrap 4.3.1 破坏了 PopConfirm

来自分类Dev

IIS7上的MVC 4网站-被较小的更改破坏了(AutoMapper?)

来自分类Dev

物理文件夹破坏了IIS Express上的ASP.NET URL路由

来自分类Dev

Neo4J-WHERE ALL子句破坏了节点上的匹配

来自分类Dev

Datadog Real User Monitoring破坏了IE11上的节点服务器