接受朋友的请求后标记为已读

时间:2019-08-12 20:40:01

标签: php mysql laravel notifications

我有一个简单的功能可以接受朋友的请求:

before_all do
    ENV["MATTERMOST_WEBHOOK_URL"] = 'https://my_new_webooh_from_mattermost'
end

工作正常,但是如果其他用户发送了朋友的请求,他将发送通知。我想在接受请求后将其标记为已读,但是我遇到了问题。我不知道如何进行查询构建以检查此通知。我知道我可以创建一个新功能,并且像attirute使用notify id一样,但是我网站的用户不仅可以在通知列表中接受请求,而且可以在用户个人资料中接受请求。

我考虑过从“通知”表中读取信息表单“数据”列,但是我遇到了问题。我尝试了一些查询建筑物:

before_all

    def send_message_to_mattermost(options)
      unless ENV['MATTERMOST_WEBHOOK_URL'].nil? || ENV['MATTERMOST_WEBHOOK_URL'].empty?
        mattermost(
            pretext: options[:pretext],
            message: options[:msg],
            default_payloads: options[:default_payloads],
            username: 'Fastlane',
            icon_url: 'https://s3-eu-west-1.amazonaws.com/fastlane.tools/fastlane.png',
            payload: {},
            attachment_properties: {
                title: options[:title],
                thumb_url: options[:thumb_url],
                fields: [{
                     title: 'Version',
                     value: options[:version_number],
                     short: true
                 },
                 {
                     title: 'Build Number',
                     value: options[:build_number],
                     short: true
                 },
                 {
                     title: 'Built by',
                     value: 'Jenkins',
                     short: true
                 }]
            },
            success: options[:success]
        )
      end
    end

但是没有用。 “ 12”是发件人的ID,

表结构是普通的通知结构:

public function acceptFriend($id){
  $user = User::find($id);
  $sender = Auth::user();

  $sender->acceptFriendRequest($user);

  return redirect()->back();
}

数据列将包含一个数组,例如:

$hello = auth()->user()->unreadNotifications->where('notifiable_id', Auth::user()->id)
                             ->where('data->arr->id', '12')->first();

1 个答案:

答案 0 :(得分:0)

您将需要与LIKE查询等效的查询生成器。

->where('data', '%12%')将生成SQL:data = '%12%'不返回结果。

->where('data', 'like', '%12%')将生成应该起作用的SQL:data like '%12%'