我有两个表,我试图加入
它们以获得所有引用的表,但出现错误,但我不确定我做错了哪一部分,有人可以给我一个手?
我有这张票表迁移
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:select
tickets.* from
ticketsinner join
ticket_noteson
tickets.
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/