在 Laravel 中的枢轴 table 中对属性使用演示者
Using a presenter on attributes in a pivot table in Laravel
我只是想知道如何为枢轴内部的属性实施 Presenter 模式 table?例如,考虑这段代码(这只是一个例子,并不是我实际代码的复制):
@foreach($users->comments as $comment)
<h1>{{ $comment->title }}</h1> // calls 'title()' in CommentPresenter
<p>{{ $comment->body }}</p> // calls 'body()' in CommentPresenter...
<p>{{ is_null($comment->pivot->deleted_at) ? '' : '[REMOVED]' :}} // Where can I put this???
@endforeach
我可以在哪里放置最终属性呈现方法?请记住,我也希望能够使用这种关系的倒数。
非常感谢任何帮助
谢谢!
您可以为此使用 Laravel 自动展示包。它将允许您使用特定方法在模型上实现演示器 class 以覆盖模型的正常数据属性。但是,我不认为这会在进入模型的过程中格式化数据(如果这就是你所说的反向)。
您可以在您的模型中覆盖 newPivot
,然后使用您自己的 Pivot
模型。它将主要被视为 "normal" Eloquent 模型,因此自动演示程序包应该可以工作。
评论模型
public function newPivot(Model $parent, array $attributes, $table, $exists)
{
if($parent instanceof User){
return new CommentUserPivot($parent, $attributes, $table, $exists);
}
return parent::newPivot($parent, $attributes, $table, $exists);
}
用户模型
public function newPivot(Model $parent, array $attributes, $table, $exists)
{
if($parent instanceof Comment){
return new CommentUserPivot($parent, $attributes, $table, $exists);
}
return parent::newPivot($parent, $attributes, $table, $exists);
}
CommentUserPivot 模型
class CommentUserPivot extends \Illuminate\Database\Eloquent\Relations\Pivot {
// presenter stuff
}
我只是想知道如何为枢轴内部的属性实施 Presenter 模式 table?例如,考虑这段代码(这只是一个例子,并不是我实际代码的复制):
@foreach($users->comments as $comment)
<h1>{{ $comment->title }}</h1> // calls 'title()' in CommentPresenter
<p>{{ $comment->body }}</p> // calls 'body()' in CommentPresenter...
<p>{{ is_null($comment->pivot->deleted_at) ? '' : '[REMOVED]' :}} // Where can I put this???
@endforeach
我可以在哪里放置最终属性呈现方法?请记住,我也希望能够使用这种关系的倒数。
非常感谢任何帮助
谢谢!
您可以为此使用 Laravel 自动展示包。它将允许您使用特定方法在模型上实现演示器 class 以覆盖模型的正常数据属性。但是,我不认为这会在进入模型的过程中格式化数据(如果这就是你所说的反向)。
您可以在您的模型中覆盖 newPivot
,然后使用您自己的 Pivot
模型。它将主要被视为 "normal" Eloquent 模型,因此自动演示程序包应该可以工作。
评论模型
public function newPivot(Model $parent, array $attributes, $table, $exists)
{
if($parent instanceof User){
return new CommentUserPivot($parent, $attributes, $table, $exists);
}
return parent::newPivot($parent, $attributes, $table, $exists);
}
用户模型
public function newPivot(Model $parent, array $attributes, $table, $exists)
{
if($parent instanceof Comment){
return new CommentUserPivot($parent, $attributes, $table, $exists);
}
return parent::newPivot($parent, $attributes, $table, $exists);
}
CommentUserPivot 模型
class CommentUserPivot extends \Illuminate\Database\Eloquent\Relations\Pivot {
// presenter stuff
}