php - 如何避免添加重复的element.Laravel,PHP

标签 php mysql laravel web

很快,就有老师了,我必须给他们附上类(class)。每门类(class)只能添加一次(不能添加两次)。我的代码可以正常工作,但仅适用于id=1元素其他类(class)可以多次附加到教师 。我正在用 Laravel 编写代码。 (php)。 我无法理解为什么它只适用于第一个元素(course($id=1))。 你能帮我吗。我的错误在哪里??先感谢您。 这是我的代码。对于一位老师来说,应该附加许多不同的类(class)。但一门类(class)不能重复两次!

public function addCourse($id, Request $request) {
        $teacher = Teacher::findOrFail($id);
        if($teacher->has('courses')->where('id', $request->get('course_id'))->get()->isEmpty()) {
            $teacher->courses()->attach($request->get('course_id'));

        }
         else {
            flash()->error('This Course has been added already!')->important();
        }


        return back();
    }

最佳答案

我认为您的查询方式存在问题。

当你这样做时...

$teacher->has('courses')->where('id', $request->get('course_id'))

那个->where()仍在查看teachers表,而不是类(class)表。我认为您真正想做的是使用 whereHas 来确定老师是否有该类(class)。

$hasCourse = Teacher::whereHas('courses', function($q) use ($request) {
    // Here we can add constraints on the courses table
    $q->where('id', $request->get('course_id'));
})->where('id', $id)->exists();

if (! $hasCourse) {
    $course = Course::findOrFail($request->get('course_id'));
    $course->teacher()->associate($id);
}

关于php - 如何避免添加重复的element.Laravel,PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42834325/

相关文章:

mysql - 使用 Group By 修剪 MySQL 表

mysql - 当 LEFT JOINing 两个不同的表时,GROUP CONCAT concats 太多重复值

java - 将远程 Mysql 连接到 Netbeans

Laravel 5.3 auth 方法实现/覆盖

php - 如何将 PDF 转换为文本以便我可以使用 PHP 解析该文本?

php - 如何在 Laravel 中过滤后显示消息?

PHP 检查文件大小以查看其是否发生变化

php - 使用 PHP 检索 MySQL 字段

laravel - Axios、Laravel 和 VueJS 中的删除方法

php - Laravel 日志级别,有何不同?