【发布时间】:2016-05-31 23:48:39
【问题描述】:
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 的位置。
如何让这些动态属性包含软删除的项目?
【问题讨论】:
标签: php laravel laravel-5 eloquent soft-delete