如何避免添加重复的 element.Laravel、PHP
How to avoid adding duplicate of element.Laravel, PHP
马上就有老师了,我要给他们补课。每门课程应该只添加一次(而不是两次)。我的代码有效,但仅适用于 element with id=1。并且 其他课程 可以附加给老师 不止一次 。我正在 laravel 中编写代码。 (php)。
我不明白为什么它只适用于第一个元素(课程($id=1))。
你能帮我吗。我的错误在哪里??先感谢您。
这是我的代码。对于一个老师,应该附加许多不同的课程。但不是一门课程两次!
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 = Teacher::findOrFail($id);
$course = Course::findOrFail($request->get('course_id'));
$course->teacher()->associate($teacher);;
$course->save();
我认为您的查询方式存在问题。
当你这样做时...
$teacher->has('courses')->where('id', $request->get('course_id'))
那个->where()
还在看teachers
table,不是table的课程。我认为您真正想要做的是使用 whereHas
来确定老师是否有该课程。
$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);
}
问题已解决。我用了
$teacher->courses()->sync([$request->get('course_id')],$detaching =
false);
我终于有了这个脚本:
> public function addCourse($id, Request $request) {
> $teacher = Teacher::findOrFail($id);
> $teacher->courses()->sync([$request->get('course_id')],$detaching =
> false);
>
> return back();
> }
谢谢大家。
马上就有老师了,我要给他们补课。每门课程应该只添加一次(而不是两次)。我的代码有效,但仅适用于 element with id=1。并且 其他课程 可以附加给老师 不止一次 。我正在 laravel 中编写代码。 (php)。 我不明白为什么它只适用于第一个元素(课程($id=1))。 你能帮我吗。我的错误在哪里??先感谢您。 这是我的代码。对于一个老师,应该附加许多不同的课程。但不是一门课程两次!
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 = Teacher::findOrFail($id);
$course = Course::findOrFail($request->get('course_id'));
$course->teacher()->associate($teacher);;
$course->save();
我认为您的查询方式存在问题。
当你这样做时...
$teacher->has('courses')->where('id', $request->get('course_id'))
那个->where()
还在看teachers
table,不是table的课程。我认为您真正想要做的是使用 whereHas
来确定老师是否有该课程。
$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);
}
问题已解决。我用了
$teacher->courses()->sync([$request->get('course_id')],$detaching = false);
我终于有了这个脚本:
> public function addCourse($id, Request $request) { > $teacher = Teacher::findOrFail($id); > $teacher->courses()->sync([$request->get('course_id')],$detaching = > false); > > return back(); > }
谢谢大家。