dppppp

5594 经验值

就是在点击用github注册的时候的弹框,我的github邮箱是用的QQ邮箱,感觉好像不能用

老师请问多对多关系当中的中间表,默认生成的规则是哪个在下划线前面,哪个在后面呢?
比如userpost的关系,表是post_user,这个先后顺序是怎么来的呢?

We couldn't register email with disposal domain 用github注册的时候出现这个是什么情况?老师

小姐姐 请问我下好字体之后 输入汉字会出现这种情况是什么问题呢?
image.png

真是要什么有什么~!值~老师,加油!

我找到一个大神的解答:如下

sync过程中确实是会有删除question_topic表的情况,不触发事件是因为在删除中间表的时候调用的是Builder这个类上面的delete方法,而不是QuestionTopic你这个模型上面的delete

这个和DB::table('question_topic')->delete(1)不触发事件是同样的道理

所以我写的下面一条回复的方法,算是直接监听吗?但是貌似sync方法并没有触发deleted或者deleting

换了一种方式写:
在AppServiceProvider中

public function boot()
    {
        QuestionTopic::observe(QuestionTopicObserver::class);
    }

QuestionTopicObserver中

namespace App\Observers;

use App\QuestionTopic;
use App\Topic;

class QuestionTopicObserver
{
    public function deleting($question_topic){
        dd('删除了一条数据'.$question_topic->id);
        $topic = Topic::find($question_topic->topic_id)->decrement('questions_count');
    }
}

我用如下测试方法是会有打印的

Route::get('/test', function () {
    $question_topic = \App\QuestionTopic::find(15);
    $question_topic->deleted();
});

但是在$question->topics()->sync($topics);这种情况下,也会有删除对应数据的情况,可是不会触发,没有打印.

阿西。。。那还有什么高深的方法使用模型事件呢?

老师这个 5.3里面$events这个能用吗?我定义了怎么不好使呢

这是question_topic模型

class QuestionTopic extends Model
{
    protected $table = 'question_topic';

    protected $events = [
        'deleted' => QuestionTopicDeleteEvent::class,
    ];
}

这是EventServiceProvider

protected $listen = [
        'App\Events\QuestionTopicDeleteEvent' => [
            'App\Listeners\QuestionTopicDeleteListener',
        ],
    ];

这是QuestionTopicDeleteEvent

 public function __construct(QuestionTopic $question_topic)
    {
        $this->question_topic = $question_topic;
    }

这是QuestionTopicDeleteListener

public function handle(QuestionTopicDeleteEvent $event)
    {
        dump($event->question_topic->toArray());
        dd('正在执行删除操作');
    }

走不到打印的地方 不知道哪里错了