【发布时间】:2018-11-24 00:50:11
【问题描述】:
我有两张表,我正在尝试 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: selecttickets.* fromticketsinner jointicket_notesontickets.ticketNumber=ticket_notes.ticketNumberwhere (ticketNumber4@9876584339@is_deletedp>
谁能让我重新审视一下我在加入时做错了什么? 提前感谢您的任何建议/帮助。
【问题讨论】:
-
这是一个常见问题解答。请始终使用谷歌错误消息和许多清晰、简洁和特定的版本/措辞,使用和不使用您的特定字符串/名称和“site:stackoverflow.com”和标签并阅读许多答案。将您发现的相关关键字添加到搜索中。如果您没有找到答案,请发布,使用 1 个变体搜索作为标签的标题和关键字。请参阅向下投票箭头鼠标悬停文本。如果您确实有要发布的非重复代码问题,请阅读并在minimal reproducible example 上采取行动。
标签: php mysql sql laravel join