Laravel属于许多其他方法

时间:2018-10-22 01:41:23

标签: php laravel

对于我使用Cash.prototype.text的同一用户模型上的关注者关系

belongsToMany()

但是由于我在使用vue加载时将其用于聊天列表,所以我在页面加载时传递public function followers() { return $this->belongsToMany('App\User', 'followers', 'follow_id', 'user_id'); } ,这可以根据需要工作。

但是我可以说只使用一些列,例如:

json_encode(auth()->user()->followers)

我还可以使用其他方法来->select(['id', 'name', 'avatar']);

avatar

我又该如何通过许多认证呢?没有public function image() { return $this->avatar || 'some-default-image'; } 方法。.

2 个答案:

答案 0 :(得分:1)

您正在寻找的是Accessor函数:

  

Laravel Accessors and Mutators

基本上,您可以在模型中定义访问器函数:

public function getAvatarAttribute($value)
{
    return $value || 'some-default-image';
}

然后,当您使用avatar访问->avatar属性时,将调用accessor函数,并将获得计算值。

================================================ =====================

评论有字数限制。

您有一个关注者表,其中每个关注者都是一个User。您可以使用关系来过滤属于User组的所有关注者。您希望在每个关注者上调用getInfo(),以便将其他数据附加到您的JSON结构中。

在这种情况下,您无需筛选每个关注者并自己调用getInfo()。您使用accessor方法,将getInfo()中的代码放入accessor方法中,并在$appends模型中修改User数组,然后再修改{{1} }数据将自动添加。

JSON

然后,将public function getUserInfoAttribute() { $userInfo = ... //use logic in your original getInfo method return $userInfo; } 添加到user_info模型的User数组中:

$appends

这样,当您的实例序列化为protected $appends = ['user_info']; 时,您的user_info将自动包括在内。

就像我在评论中说的那样,您应该查看:

  

Appending Values To JSON

了解更多信息。

对于JSON s,无论您使用的是API还是Vue或其他任何东西,当传递React数据供前端代码使用时,您基本上是在创建{ {1}}个。仅供参考:

  

Eloquent: API Resources

答案 1 :(得分:1)

尝试在您的for i in {1..6}; do sed -n '{ '18,5773p;q' CPMIR'"${i}"'.sln }' > batch${i}.txt done 模型中添加

User

这将强制注入您的计算属性,即。每个class User extends Model { protected $appends = ['image']; // other stuff.. } 模型实例中的图像,但要使其工作,您必须像User那样命名(或创建另一个)方法,而不仅仅是getImageAttribute()

image()