为了账号安全,请及时绑定邮箱和手机立即绑定

对来自 db 的所有消息使用一种方法

对来自 db 的所有消息使用一种方法

PHP
开心每一天1111 2021-11-26 19:58:36
我有一个表,我想使用一种或多种方法从 db 中获取所有结果。此方法可以将#hashtags 更改为链接,将 bbcode 更改为 html 标签等。假设我有以下查询:$query = Comments::orderBy('created_at', 'desc')->get();评论表有一个评论栏,用户可以在其中使用表情符号 bbcode 等。此查询返回一些结果。我如何在列上使用方法?如果我有一个结果很简单:$query = Posts::find(1);$desc = myMethod($query->desc);
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

我假设你想格式化你的雄辩属性?看看https://laravel.com/docs/5.8/eloquent-mutators


如果您不想将格式化的数据保存在 db 上。您可以通过定义访问器来使用它。例如,请参见下文


// on your model you just need to create new methods 

// with `get` as prefix and `Attribute` as suffix


public function getBbcToHtmlAttribute() {

    return myMethod($query->desc);

}

请注意,get并且Attribute在您的方法名称上是必需的(例如 getMyNewAccessorAttribute`


之后,您需要添加casts属性。如果您已经有 casts 属性,则只需将其添加到数组中,如果您没有 casts 属性,则需要定义它。


protected $casts = [

    'BbcToHtml'

];

然后您可以在模型实例的任何位置使用它。


$query = Posts::find(1);

$desc = $query->bbctohtml;


查看完整回答
反对 回复 2021-11-26
?
狐的传说

TA贡献1804条经验 获得超3个赞

正如 MarkB 所说,您需要使用一个 mutator,创建一个可以接受任何输入并为您的 bbcode 生成正确 html 代码的辅助类。然后你会在你的模型上创建一个 mutator 并使用它而不是 bbcode 文本所在的字段。


查看完整回答
反对 回复 2021-11-26
  • 2 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信