首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 8:调用string上的成员函数通知()

Laravel 8:调用string上的成员函数通知()
EN

Stack Overflow用户
提问于 2021-04-27 06:23:28
回答 4查看 881关注 0票数 1

我正在与Laravel 8合作,以建立一个论坛,现在我想发送一个通知给一个用户谁已经问了一个问题,每当有人回答这个问题。

因此,为了做到这一点,我将其添加到Controller中:

代码语言:javascript
复制
public function postAnswer(Request $request, $question, $asker) {
        $validate_data = $request->validate([
            'answer' => 'required',
        ]);

        $answer = Answer::create([
            'answer' => $request->answer,
            'user_id' => auth()->user()->id,
            'question_id' => $question,
        ]);

        $asker->notify(new RepliedToThread($question));

        return back();
    }

因此,$question问题id$asker是提问者的用户id

但现在我发现了一个错误:

调用字符串上的成员函数通知()

有趣的是,当我使用auth()->user()->notify(new RepliedToThread($question));时,它工作得很好!

但是我不想通知任何经过认证的用户,我需要通知问过问题的人,这就是为什么我试图通过$asker.

如果你知道如何解决这个问题,请告诉我.

我真的很感激你们的任何想法或建议。

提前谢谢。

刀片:

代码语言:javascript
复制
<form action="{{ route('questions.answers', ['question' => $show->id, 'asker' => $show->user->id]) }}" method="POST" enctype="multipart/form-data">
    @csrf
    <div class="mb-4">
        <textarea name="answer" id="answer" class="form-control BSinaBold" rows="7" placeholder="Write down answer"></textarea>
        @error('answer')
            <div class="text-red-500 mt-2 text-sm">
                {{ $message }}
            </div>
        @enderror
    </div>
    </br>
    <button type="submit" class="btn btn-primary">Send</button>
</form>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-04-27 06:32:50

问题是,asker只是一个id,您应该从user表中获取asker的其他信息,然后将通知传递给asker

代码语言:javascript
复制
$asker = User::findOrFail($asker);
$asker->notify(new RepliedToThread($question));
票数 2
EN

Stack Overflow用户

发布于 2021-04-27 06:29:59

根据你所说的,问题是$asker。这个参数应该是User模型中的一个实例,但是错误意味着它是字符串。

在表单中更改表单标记:

代码语言:javascript
复制
<form action="{{ route('questions.answers', ['question' => $show->id, 'asker' => $show->user]) }}" method="POST" enctype="multipart/form-data">

id之后删除user

票数 2
EN

Stack Overflow用户

发布于 2021-04-27 06:36:04

确保您的Answer.php导入了use Notifiable;

参考链接https://laravel.com/docs/8.x/notifications#using-the-notifiable-trait

然后,只有您可以从notify()模型实例调用Answer函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67277920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档