php - SQLSTATE[23000] : Integrity constraint violation: 1052 using join with laravel

标签 php mysql sql laravel join

我有两个表,我试图加入它们以获得所有引用的表,但出现错误,但我不确定我做错了哪一部分,有人可以给我一个手?

我有这张票表迁移

public function up()
{
    Schema::create('tickets', function (Blueprint $table) {
        $table->increments('id');
        $table->string('ticketNumber')->nullable(true)->unique();
        $table->boolean('is_deleted')->default(false);
        $table->timestamps();
    });
}

我有这个表,用于保存门票 ticket_notes 的注释,并且我使用 ticketNumber 而不是 id 进行引用

public function up()
{
    Schema::defaultStringLength(191);
    Schema::create('ticket_notes', function (Blueprint $table) {
        $table->string('ticketNumber');
        $table->foreign('ticketNumber')->references('ticketNumber')->on('tickets');
        $table->increments('id');
        $table->string('rloc', 50);
        $table->boolean('is_deleted')->default(false);
        $table->timestamps();
    });
}

我使用查询生成器来执行查询,而不是 Eloquent 关系

DB::table('tickets')->where([
    'ticketNumber' => 12345,
    'is_deleted'   => false,
])
    ->join('ticket_notes', 'tickets.ticketNumber', '=', 'ticket_notes.ticketNumber')
    ->select('tickets.*');

我收到此错误 SQLSTATE[23000]:违反完整性约束:1052 where 子句中的列“ticketNumber”不明确(SQL:selecttickets.* fromticketsinner jointicket_notesontickets.ticketNumber=ticket_notes.ticketNumber其中 (ticketNumber= 12345 且is_deleted= 0))

任何人都可以让我重新审视一下我在连接中出错的地方吗? 预先感谢您的任何建议/帮助。

最佳答案

由于连接的缘故,有 2 个名为 TicketNumber 的列。指定您想要哪一个。 'tickets.ticketNumber' => 12345

DB::table('tickets')->where([
    'tickets.ticketNumber' => 12345,
    'is_deleted'   => false,
])
->join('ticket_notes', 'tickets.ticketNumber', '=', 
    'ticket_notes.ticketNumber')
->select('tickets.*');

关于php - SQLSTATE[23000] : Integrity constraint violation: 1052 using join with laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53454276/

相关文章:

mysql - (A 加入 B) 加入 (C 加入 D)

mysql - 选择不同的记录,同时从 MySQL 中选择第一次出现的记录

sql - 检查日期时间值是否溢出

sql - PostgreSQL中的Gin索引以及gin_trgm_ops和to_tsvector的区别

php - 如果从另一个表连接时记录中包含重复项,则显示记录中的一个名称

php - Symfony2 - 删除 AcmeBundle 演示会导致安全提供程序错误

php - PHP镜像未显示

zend-framework - nginx php5-fpm 失败(2 : No such file or directory)

mysql - 如果表中存在行,则在 SQL 中使用另一个表值

php - 使用PHP从MYSQL中的一对多关系获取嵌套的JSON数据