加入彼此不相关的表laravel
Posted
技术标签:
【中文标题】加入彼此不相关的表laravel【英文标题】:Joining table which are not related with one another laravel 【发布时间】:2018-05-15 07:58:53 【问题描述】:只是想问一些关于加入表格的问题
我想知道是否可以将 2 个表连接在一起,即使它们彼此之间没有关系。这可能吗?如果是的话,你能给我一个例子来说明它是如何完成的。如果没有,是否有任何其他方式来加入或关联这两个表,即使它没有任何外键(例如: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();
);
【问题讨论】:
【参考方案1】:这些表是否间接相关?即,当您制作数据库图表时,这些表是否通过一个或多个其他表连接?如果是,那么您可以使用多个连接语句将它们连接在一起。
如果不是,在某些情况下,您可以将它们连接到相同的值上,即使它们不是外键。
编辑:是的,您可以在 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 的条目。 相反,请创建一个用户表并将 verifys.name_of_user 替换为 verifys.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 现在(如果设置正确)是一个外键并且因此这些表是相关的;)
【讨论】:
它们根本没有任何关系,没有关系,没有外键等,我想知道是否可以为这两个表做一个连接语句。如果可能的话,你能给我举个例子吗? 我现在明白您要求特定的桌子设计,而不仅仅是一个理论问题。在这种情况下,你能不能展示一下这两张表的结构? 在我更新我的问题并放入示例表时请稍等 对不起,我想我可能需要一些时间来想一个例子,我真的想不到 1 哈哈哈 所以..这是一个理论问题?【参考方案2】:检查以下查询,
SELECT t1.Country,t2.* FROM table_1 as t1, table_2 as t2 where t1.id='1' and t2.id='2'
【讨论】:
如果我想从 table_1 和 table_2 中获取名称我想获取 Country 怎么办? 对于这部分,t1.id='1'和t2.id='2',为什么需要他们的id?我想如果他们不相关,为什么这里仍然涉及 id以上是关于加入彼此不相关的表laravel的主要内容,如果未能解决你的问题,请参考以下文章
为啥这个 CSS 中的元素相互抵消(在不涉及继承但带有注释的 HTML 中)彼此不相关?
MySQL 加入 + “WHERE something=MAX(something)”
您可以从位于单个结果集中的两个单独的表中提取数据吗? [不加入问题]
Mysql如何通过'[id,anotherId]'格式加入相关表