SQLSTATE [23000]:违反完整性约束:1052与laravel结合使用

时间:2018-11-24 00:50:11

标签: php mysql sql laravel join

我有两个表,我试图join来获取所有引用的表,但是却出现错误,但是我不确定我做错了哪一部分,有人可以帮忙吗? / p>

我有此表迁移的票证

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();
    });
}

我是query builder而不是eloquent relationships的查询者

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

我收到此错误 SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'ticketNumber' in where clause is ambiguous (SQL: select.* frominner joinon.票编号=.票编号where (票编号{{ 1}}已删除= 12345 and

任何人都可以给我新的外观,我在联接上做错了什么? 预先感谢您的任何建议/帮助。

1 个答案:

答案 0 :(得分:1)

由于连接,所以有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.*');