我有两个表,我试图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
票.* from
票inner join
票on
票.
票编号=
票.
票编号where (
票编号{{ 1}}已删除= 12345 and
任何人都可以给我新的外观,我在联接上做错了什么? 预先感谢您的任何建议/帮助。
答案 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.*');