【问题标题】:Laravel $appendsLaravel $追加
【发布时间】:2017-03-14 05:13:01
【问题描述】:

我试图暂时忽略我的 User 模型中的所有 $appends。我的应用程序每次都需要所有这些,但这次我不需要它,它降低了我的查询性能。

我需要正确的方法来做到这一点。我已经为这个解决方案搜索了 1 周,但一无所获。

class User extends Authenticatable
{
    use Notifiable,
        SoftDeletes,
        FilterTrait,
        HasRoles;


    public $appends = [
       'fullName',
       'name',
       'since',
       'newCustomer',
       'image_URL',
       'th_roles'
   ];
...

【问题讨论】:

  • 我没有对你投反对票,但我认为$appends 是为始终附加而设计的。我认为您需要使用范围功能。像这样:stackoverflow.com/questions/22942021/… 但是是的,您需要重写所有内容。如果您发现其他选项,请发布。
  • 感谢您的回复。我知道这就是我使用 $appends 的原因,但只有一次我不需要'newCustomer'。当然,如果我发现了什么,我会发布它。

标签: php laravel laravel-5 eloquent


【解决方案1】:

$appends 变量中列出的值仅在您的模型转换为数组时附加,例如当您从控制器返回时。为了避免你应该清除你返回的所有对象上的 $appends 变量,例如:

public function someController() {
  $user = User::find(1);
  $user->setAppends([]);

  return $user; //no values will be appended
}

【讨论】:

  • 感谢您的回复。我将数组作为 json 返回,但它已经执行了 getter,它是一个查询,它正在减慢进程。我试图避免完全调用“newCustomer”附加。你明白我想要完成什么吗?感谢您的帮助。
  • 如果 getter 被执行,则意味着您正在某处访问 newCustomer 属性...从您的 getter 中抛出一个异常并查看它的调用位置
猜你喜欢
  • 2019-08-26
  • 2016-10-23
  • 1970-01-01
  • 2016-08-26
  • 2019-08-09
  • 2021-05-19
  • 2018-01-17
  • 1970-01-01
  • 2013-04-26
相关资源
最近更新 更多