SQLSTATE [23000]: Нарушение ограничения целостности: 1052 при использовании соединения с laravel - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть две таблицы, и я пытаюсь 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();
    });
}

Я использую 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 tickets .* from Tickets inner join ticket_notes ontickets . ticketNumber = ticket_notes . ticketNumber where ( ticketNumber = 12345 and is_deleted = 0))

Кто-нибудь может дать мне свежий взгляд, где я ошибся с объединением?Заранее спасибо за любые предложения / помощь.

1 Ответ

0 голосов
/ 24 ноября 2018

Из-за объединения есть 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.*');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...