在我的laravel app控制器中,我想检索一个用户参与的聊天,我将用户ID附加到请求本身,然后在controlelr中创建一个名为chat_receiver的laravel模型访问器,如果我每次检索聊天模型时都附加这个访问器,我也会得到chat_receiver,这样我就不会同时检索两个聊天参与者(user_id,receiver_id),但是我并不总是想得到访问器。
所以问题是,有没有一种方法可以在需要的时候调用控制器中的accessor,而不是追加它,比如我如何使用Model::with([ 'relationship ])...
我的访问者在聊天模型:
public function getChatReceiverAttribute()
{
$request = resolve(Request::class);
$user_id = $request->get('user_id', false);
if($user_id)
{
if($user_id == $this->user->id)
{
//return $this->receiver;
return
[
'id' => $this->receiver->id,
'name' => $this->receiver->name,
'lat' => $this->receiver->lat,
'lng' => $this->receiver->lng,
'images' => $this->receiver->images,
'sexuality' => $this->receiver->sexuality,
'birthYear' => $this->receiver->birthYear,
'birthMonth' => $this->receiver->birthMonth,
'birthDay' => $this->receiver->birthDay,
'gender' => $this->receiver->gender,
'fcm_token' => $this->user->fcm_token,
'languageCode' => $this->user->languageCode,
'mood' => $this->user->mood,
'description' => $this->user->description,
];
}
else
{
//return $this->user;
return
[
'id' => $this->user->id,
'name' => $this->user->name,
'lat' => $this->user->lat,
'lng' => $this->user->lng,
'images' => $this->user->images,
'sexuality' => $this->user->sexuality,
'birthYear' => $this->user->birthYear,
'birthMonth' => $this->user->birthMonth,
'birthDay' => $this->user->birthDay,
'gender' => $this->user->gender,
'fcm_token' => $this->user->fcm_token,
'languageCode' => $this->user->languageCode,
'mood' => $this->user->mood,
'description' => $this->user->description,
];
}
}
else
{
return [];
}
}
先谢了。
1条答案
按热度按时间4ioopgfo1#
而不是将其添加到appends数组中。您可以在需要时通过编程添加它。如果您查看Model trait HasAttributes.php的代码。您可以看到您可以根据需要添加附加属性。为此,使用了高阶函数集合助手。
为单个模型添加它将是。