首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel迁移显示现有列不存在

Laravel迁移显示现有列不存在
EN

Stack Overflow用户
提问于 2021-07-31 05:48:54
回答 2查看 649关注 0票数 2
代码语言:javascript
复制
$users=DB::select('SELECT 
      users.id,
      users.name,
      course.id,
      course."courseUniqueName",
      skills.id,
      skills.skill,
      subjects.id,
      subjects.subject
       FROM users 
        LEFT JOIN course ON course."userId"=users.id
        LEFT JOIN skills ON skills."userId"=users.id
        LEFT JOIN subjects ON subjects."userId"= users.id'); 

我已经在迁移的up方法中编写了上面的代码,但是当运行迁移命令时,它显示了-

代码语言:javascript
复制
Illuminate\Database\QueryException 
SQLSTATE[42703]: Undefined column: 7 ERROR:  column course.userid does not exist at character 294
HINT:  Perhaps you meant to reference the column "course.userId".

课程表迁移文件

代码语言:javascript
复制
Schema::create('course', function (Blueprint $table) {
                $table->id();
                $table->bigInteger('userId')->unsigned();
                $table->foreign('userId')->references('id')->on('users');
                $table->string('courseDisplayName');
                $table->string('courseUniqueName')->unique();
                $table->string('courseAddedBy');
                $table->dateTime('createdOn');
                $table->dateTime('lastUpdated');
                $table->softDeletes();        
            });

我不知道为什么会出现这个错误,因为我在我的“课程”表迁移中有userId列,任何帮助都是非常感谢的。

编辑

输出:

代码语言:javascript
复制
"id": 1,
 "name": "weeee",
 "courseUniqueName": "Frehers course",
 "skill": "swim",
 "subject": "IELTS"

视图查询

代码语言:javascript
复制
DB::statement("
      CREATE VIEW course_market_view AS
      (
        SELECT 
          users.id as user_id,
          users.name,
          course.id as course_id,
          course.courseUniqueName,
          skills.id as skill_id,
          skills.skill,
          subjects.id as subject_id,
          subjects.subject
           FROM users 
            LEFT JOIN course ON course.'userId'=users.id
            LEFT JOIN skills ON skills.'userId'=users.id
            LEFT JOIN subjects ON subjects.'userId'= users.id       
      )
    ");

模型

代码语言:javascript
复制
class CourseMarketView extends Model
{
    use HasFactory;
    protected $table = 'course_market_view';
    protected $fillable = ['user_id','name','course_id','courseUniqueName','skill','skill_id','subject_id','subject'];
}

控制器

代码语言:javascript
复制
<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use App\Models\CourseMarketView;

class CourseMarketController extends Controller
{
    public function getcoursebysubjectID(){

        $users = CourseMarketView::all();
        dd($users);
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-31 09:44:41

问题A.“列course.userid不存在”

使用

提示:也许您的意思是引用列"course.userId“

这是通过对字段名使用"来解决的。

代码语言:javascript
复制
$users=DB::select('SELECT 
      users.id,
      users.name,
      course.id,
      course."courseUniqueName",
      skills.id,
      skills.skill,
      subjects.id,
      subjects.subject
       FROM users 
        LEFT JOIN course ON course."userId"=users.id
        LEFT JOIN skills ON skills."userId"=users.id
        LEFT JOIN subjects ON subjects."userId"= users.id'); 

  • 单引号用于围绕字段名

查询

  • 双引号

问题B. id-fields

它不是从course.id、skills.id和subjects.id列中获取数据

问题是有4个字段被命名为id

要修复它-使用字段别名:

代码语言:javascript
复制
$users=DB::select('SELECT 
      users.id as user_id, # note rename of the field here
      users.name,
      course.id as course_id, # and here
      course."courseUniqueName",
      skills.id as skill_id,  # and here
      skills.skill,
      subjects.id as subject_id,  # and here
      subjects.subject
       FROM users 
        LEFT JOIN course ON course."userId"=users.id
        LEFT JOIN skills ON skills."userId"=users.id
        LEFT JOIN subjects ON subjects."userId"= users.id'); 

这样,id将变成4个不同的领域,因为它实际上是这样的:

  • user_id -来自users
  • course_id表-来自course
  • skill_id -来自skills
  • subject_id -来自“`subjects

相应地将应用程序代码更改为字段重命名。

票数 1
EN

Stack Overflow用户

发布于 2021-07-31 06:45:10

暗示是自己说的。您没有列userid

你桌子上的是userId

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68599509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档