изменить в поле Eager Loading в laravel - PullRequest
1 голос
/ 23 апреля 2019

У меня есть 2 таблицы, "ностальгия" и "пользователь", что между ними есть связь, в пользовательской модели я написал:

public function nostalgia(){
    return $this->hasMany(Nostalgia::class);
}

public function getPrivatePhone(){
    return substr_replace($this->phone,"***",4,3);
}

и в модели ностальгии:

public function user(){
    return $this->belongsTo(User::class);
}

теперь я хочу получить всю ностальгию в режиме нумерации страниц по отношению к пользовательской таблице, чтобы получить телефон пользователя, что я хочу изменить некоторые символы телефонного номера с помощью getPrivatePhone (), которые я определяю в модели пользователя, или в любом случае. Как я могу это сделать? Я пытаюсь этот запрос с нетерпением загрузки, но не могу изменить номер телефона:

Nostalgia::Where("confirm", "=", true)->with('user:id,phone')->Latest()->paginate(6),

1 Ответ

2 голосов
/ 23 апреля 2019

Вы можете изменить свою User модель, как показано ниже:

class User extends Model{

  protected $appends = ['privatePhone'];

  protected $visible = ['id', 'phone', 'privatePhone']

  public function getPrivatePhoneAttribute()
  {
    return substr_replace($this->phone,"***",4,3);
  }

  //Remove the method getPrivatePhone()
  //And keep everything else as it is
}

$nostalgias = Nostalgia::Where("confirm", true)->with('user')->Latest()->paginate(6);

Теперь вы можете получить доступ к:

$nostalgias->first()->user->privatePhone

или в цикле:

foreach($nostalgias as $nostalgia){
  $nostalgia->user->privatePhone;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...