首页 > 解决方案 > Laravel:无效的参数号:未定义参数

问题描述

我以前使用 mysql 数据库使用过这种方法,但是当我将环境切换到 postgresql 时,我得到了这个错误。

Facade\Ignition\Exceptions\ViewException

SQLSTATE[HY093]: Invalid parameter number: parameter was not defined 
(SQL: select "teachers".*, "student_likes"."student_id" as "pivot_student_id",
"student_likes"."liked_teacher_id" as "pivot_liked_teacher_id" 
from "teachers" inner join "student_likes" on "teachers"."id" = "student_likes"."liked_teacher_id" 
where "student_likes"."student_id" = 1 and "liked_teacher_id" in (1)) 
(View: /home/leno/sites/schooly/resources/views/student/likes/index.blade.php) 

基本上,如果两个用户都彼此喜欢,我会尝试执行匹配系统,并且仅在匹配时才显示用户。

public function matchedTeachers()
    {
        return $this->likedTeachers()->whereIn('liked_teacher_id', $this->likedStudents->keyBy('liked_teacher_id'));
    }

public function likedTeachers()
    {
        return $this->belongsToMany(Teacher::class, 'student_likes', 'student_id', 'liked_teacher_id');
    }
public function likedStudents()
    {
        return $this->belongsToMany(Student::class, 'teacher_likes', 'teacher_id', 'liked_student_id');
    }
@foreach (current_student()->matchedTeachers as $teacher)
    <div class="flex flex-col border hover:shadow-lg border-darkindigo-100 rounded-lg">
      <div class="flex-1 px-3">

        <img src="{{ $teacher->avatar }}" class="block lg:w-20 lg:h-20 rounded-full shadow-xl mx-auto -mt-0 h-20 w-20 bg-cover bg-center object-cover mb-4 mt-4">
        <img src="{{ $teacher->teacher_avatar }}" class="block lg:w-10 lg:h-10 rounded-full border-2 border-teal-400 shadow-xl mx-auto -mt-12 ml-32 h-20 w-20 bg-cover bg-center object-cover mb-4 border:z-10">
        <div class="text-sm lg:text-lg font-lato font-bold text-gray-800 capitalize text-center leading-8">{{ $teacher->name }}</div>
        <div class="text-sm lg:text-sm font-lato font-bold text-gray-700 capitalize text-center">{{ $teacher->language }}</div>
      </div>
    </div>
@endforeach

标签: phplaravelpostgresql

解决方案


推荐阅读