2015-08-12 5 views
2

Я работаю над системой уведомлений на данный момент. Проблема, с которой я сталкиваюсь в данный момент, заключается в том, что все уведомления безличны.laravel 4.2 модельные мутаторы

То, что я хотел бы, чтобы получать уведомления о сохранении в базе данных, которые имеют правильный язык персонализации, поэтому я, например, в настоящее время есть уведомление, что читается как это,

Джо Bloggs добавил Билли Джоэл, как менеджер проекта.

То, что я хотел бы для уведомления идти к каждому, что не Билли Джоэл, но Билли Джоэл я хочу следующее, чтобы быть отправлен

Джо Bloggs добавил вас в качестве менеджера проекта

в настоящее время я сохранить уведомления, как это для менеджеров проектов по синхронизации сводной таблицы,

$notification = new Notification; 
    $notification->withURI($organisation->slug); 
    $notification->withIsNotification(1); 
    $notification->regarding($organisation); 
    $notification->user_id = ResourceServer::getOwnerId(); 
    $notification->withType('updated'); 
    //die(print_r($changes)); 
    foreach($changes['attached'] as $k => $v) { 
     //Loop through each new attachment to the pivot 
     //look for who the attachement is from the user table and then 
     //add the final notification details and fire the deliver method 
     $addedUser = User::find($v); 
     $addedUserName = $addedUser->first_name . " " . $addedUser->last_name; 
     $notification->withBody($notifcationSenderName . " added " . $addedUserName . " to the organisation " . $organisation->name); 
     $notification->deliver($notifyUsers); 
    } 

Мне было интересно, что, когда я запрашиваю пользователя из моей базы данных через его модель, смогу ли я использовать мутаторы модели, чтобы либо вернуть имя пользователя и второе имя, если нет необходимости в личном уведомлении, и если это затем возвращает «Ты». Возможно ли это с помощью мутаторов, и если да, то как?

ответ

4

Пока я не одобряя этот подход, вы уверены, что можете сделать это в аксессору:

public function getNameAttribute() 
{ 
    if (Auth::id() == $this->id) return 'you'; 

    return "{$this->first_name} {$this->last_name}"; 
} 
+1

@Zuhran - в то время как 'аутентификации()' помощник не доступен в 4.2, то [ 'id' метод] (https://github.com/laravel/framework/blob/4.2/src/Illuminate/Auth/Guard.php#L165). Это безопаснее, если нет зарегистрированного пользователя. –