lg23

668 经验值

NewMessageNotification 它不知道有没有做什么特别的处理
目前我的执行没有任何报错,私信发送成功,但关于这个私信的消息提示一直没有.
代码大概如下:

<?php
namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;

class NewMessageNotification extends Notification
{
    use Queueable;

    public $message;

    public function __construct(Message $message)
    {
        $this->message = $message;
    }

    public function via($notifiable)
    {
        // return ['mail'];
        return ['database'];
    }

    public function toDatabase($notifiable)
    {
       return [
            'name' => $this->message->fromUser->name,
            'dialog' => $this->message->dialog_id,
       ];
    }

<?php
namespace App\Http\Controllers\Home;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Repositories\MessageRepository;
use App\Notifications\NewMessageNotification;
use Illuminate\Support\Facades\Notification;
use Auth;

class InboxController extends Controller
{
    protected $message;

    public function __construct(MessageRepository $message)
    {
        $this->middleware('auth');
                $this->message = $message;
    }

    /**
     * 私信首页
     */
    public function index()
    {
        $messages = $this->message->getAllMessages();
       
        return view('inbox.index',['messages'=>$messages->unique('dialog_id')->groupBy('dialog_id')]);
    }

    /**
     * 显示私信列表 
     */
    public function show($dialogId)
    {
        $messages = $this->message->getMessageByDialogId($dialogId);
        
        $messages->markAsRead();

        return view('inbox.show', compact('messages', 'dialogId'));
    }

    /**
     * 私信回复
     */
    public function store($dialogId)
    {
        // 根据 $dialogId 查询用户私信相关内容
        $message = $this->message->getSingleMessageBy($dialogId);
        
        // 获取接收私信用户的id
        $toUserId = $message->from_user_id == user()->id ? $message->to_user_id : $message->from_user_id;
        
        $newMessage = $this->message->addMessage([
            'from_user_id' => user()->id,
            'to_user_id' => $toUserId,
            'body' => request('body'),
            'dialog_id' => $dialogId
        ]);

        // 这里希望接收私信用户看到消息提示,所以用 toUser
        $newMessage->toUser->notify(new NewMessageNotification( $newMessage ));

        return back();
    }

}

报错内容如下:
Type error: Argument 1 passed to App\Notifications\NewMessageNotification::__construct() must be an instance of App\Notifications\Message, instance of App\models\Message given, called in /vagrant/zt360/admin/app/Http/Controllers/Home/InboxController.php on line 62

问题解决,没有引入 model

群主,我自定义了一个邮件发送
但没能实现你在sendCloud 里一样,邮件里 名字与链接对应, 不知道我这个自定义是否有可能实现此功能

public function toSendcloud($notifiable)
    {
        /* 自定义模板发送邮件 */
        // 邮件内容
        $EMAILResult = new EMAILResult();
        $EMAILResult->to = Auth::guard('api')->user()->email;
        $EMAILResult->cc = '[email protected]';
        $EMAILResult->subject = '用户关注提示';
        $EMAILResult->content = '你好,知乎app上'.Auth::guard('api')->user()->name.'关注了你';
        // 发送邮件
        Mail::send('email_follow', ['EMAILResult' => $EMAILResult], function($m) use ($EMAILResult) {
            $m->to($EMAILResult->to, '尊敬的用户')
            ->cc($EMAILResult->cc)
            ->subject($EMAILResult->subject);
        });

        /* 使用Sendcloud 的模板发送邮件 */
    }

另外我用Sendcloud 模板一样也没有名字与链接对应
模板设置如下:

你好,Zhihu-App上 %name% 关注了你。

是因为你在模板加了超链接的原因吗?

群主你好,好像视频中没的提到如何取消关注的站内通知??
这里是否可以直接在 notifications 数据表中添加一个用于判断是否关注的字段。
然后在视图文件中判断该字段的状态用于区分已关注和取消关注

{dd($user)}
@foreach($user->notifications as $notification)
        { $notification->type }
 @endforeach

群主, 我打印这个user,没找到这个notifications 但它的确是存在的,我想了解此相关。
在laravel 5.3 新特性中是否有此内容

群主,这两天照视频做关注,一直正常。但是今天做站内通信时,点击关注开始报错,且两个关注都一样的错,问题是我没有改动过相关内容,而且数据库也没动过.
报错内容如下:

SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2017-03-26 02:34:13' for column 'created_at' at row 1 (SQL: insert into `followers` (`created_at`, `followed_id`, `follower_id`, `updated_at`) values (2017-03-26 02:34:13, 1, 3, 2017-03-26 02:34:13))

里看着字段是对上的,无效的时间格式

问题解决了,改成中国时区就可以了,奇怪的是之前我一直没改,一样没问题的

群主!实在无奈
count($followed['detached']) 打印它的值,一直是在0和1之间变化。
但是这里的if判断没效果,居然一直递减,服务器重启几次,浏览器缓存也清过几次了,但就是这样,无奈呀!

Route::post('/question/follow', function (Request $request) {
    $user = Auth::guard('api')->user();
    $question = \App\Models\Question::find($request->get('question'));
    $followed = $user->followThis($question->id);

    // $followed 返回两数组结果集 detached attached
    // 对查询结果进行判断  非空 删除记录 改变状态
    if(count($followed['detached'] > 0)) {
        $question->decrement('followers_count');
        return response()->json(['followed' => false]);
    }

    // 否则 创建记录
    $question->increment('followers_count');
    // 返回状态
    return response()->json(['followed' => true]);

})->middleware('auth:api');

找到原因了,太不小心了,不好意思打扰

群主,我在执行 str_ramdom(60) 报下面的错误?百度并没有找到这个函数相关说明,
另外有英文的论坛说到这个是 laravel 自带的方法?求解
PHP Fatal error: Call to undefined function str_ramdom() in eval()'d code on line 1
文档中有说明,但命令行中执行却失败了

attach 和 detach 一个是向关联数据表中添加一个是删除
但这个detached还没找到关于它的具体说明

群主下面的报错之前出现,

vue.js?3de6:564[Vue warn]: Error compiling template:

– Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as , as they will not be parsed.
– Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as , as they will not be parsed.
– Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as , as they will not be parsed.

但出现这个报错的页面分别是make\show\edit 这三个页面,而这三页面都有 @include('vendor.ueditor.assets')
目前执行gulp后,删除 @include('vendor.ueditor.assets')
上图内的报错没有了,初步锁定二大块:
1、.webpack('app.js');
2、@include('vendor.ueditor.assets')
但.webpack('app.js');这个大家应该都是一样的,剩下只有@include('vendor.ueditor.assets')它了。可是为什么呢?想不通

经过尝试 @include('vendor.ueditor.assets') 在app.blade.php页面加载,现在没有之前的错误提示了。问题算是解决了,但不知道群主这块是怎么处理的,我看视频中应该是在show\make\edit 页面里引入的。

但现在有一个新问题?
有登录情况下show\make\edit 三个页面均没有报错,但是在未登录情况下就会报下面的错误:

ueditor.all.js:29264 Uncaught TypeError: Cannot read property 'offsetWidth' of null
    at UE.Editor.renderUI (http://www.zt.com/vendor/ueditor/ueditor.all.js:29264:75)
    at UE.Editor.fireEvent (http://www.zt.com/vendor/ueditor/ueditor.all.js:1619:38)
    at langReadied (http://www.zt.com/vendor/ueditor/ueditor.all.js:6566:12)
    at http://www.zt.com/vendor/ueditor/ueditor.all.js:6748:17
    at HTMLScriptElement.element.onload.element.onreadystatechange (http://www.zt.com/vendor/ueditor/ueditor.all.js:921:29)

虽然没有发现它们对程序有任何影响,但是这种报错提示总是不好