gpt4 book ai didi

php - 连接彼此不相关的表 laravel

转载 作者:行者123 更新时间:2023-11-29 02:12:39 26 4
gpt4 key购买 nike

只是想问一些关于join table的问题

我想知道是否可以将两个表连接在一起,即使它们彼此没有关系。这可能吗?如果是的话,你能给我一个例子说明它是如何完成的吗?如果不是,是否有任何其他方式来加入或关联这两个表,即使它没有任何外键(例如:user_id)

我看到 sql 他们使用交叉连接之类的东西,但你也可以在 laravel 中这样做吗?

示例表:(假设我想让验证表name_of_user等于用户信息表的名称)

所以像 verification.name_of_user = user_information.name

验证用户信息表:

Schema::create(verifications, function (Blueprint $table) {
$table->increments('id');
$table->string('name_of_user');
$table->timestamps();
});

用户信息表:

Schema::create(user_info, function (Blueprint $table) {
$table->increments('id');
$table->string('name);
$table->timestamps();
});

最佳答案

这些表是否间接相关?即,当您绘制数据库图表时,这些表是否通过一个或多个其他表连接?如果是,那么您可以使用多个连接语句将它们连接在一起。

如果不是,在某些情况下您可以将它们连接到相同的值,即使它们不是外键。

编辑: 是的,您可以在 name 属性上连接这两个表,但您必须使用 sql 查询而不是 Eloquent 。

SELECT v.*, u.* 
FROM verifications AS v
JOIN user_info AS u
ON u.name = v.name_of_user

警告:
即使可能,我也不推荐它,因为可能有多个条目具有相同的名称/name_of_user。
相反,创建一个用户表并将 verifications.name_of_user 替换为 verifications.user_id 并将 user_info.name 替换为 user_info.user_id。
然后您可以加入 user_id 并始终获得正确加入的结果。

Schema::create(users, function (Blueprint $table) {
$table->increments('id');
$table->string('name');
});

Schema::create(verifications, function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->timestamps();
});

Schema::create(user_info, function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->timestamps();
});

SELECT v.*, u.*
FROM verifications AS v
JOIN user_info AS u
ON u.user_id = v.user_id

我有一段时间没有使用 laravel/eloquent,但我认为如果你设置正确,你现在甚至可以使用普通的 eloquent 方法来连接它们,因为 user_id 现在(如果设置正确)是一个外键和因此表格是相关的;)

关于php - 连接彼此不相关的表 laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47589554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com