Php 相互不相关的联接表laravel

Php 相互不相关的联接表laravel,php,mysql,laravel,join,orm,Php,Mysql,Laravel,Join,Orm,我只是想问一些关于加入表格的问题 我想知道是否有可能将两个表连接在一起,即使它们彼此之间没有关系。这可能吗?如果是的话,你能给我举个例子说明是如何做到的吗。如果没有,是否有其他方法连接或关联这两个表,即使它没有任何外键(例如:user_id) 我看到sql使用交叉连接之类的东西,但你能在laravel中也这样做吗 例如,示例表:(假设我想使_user的验证表名称_等于用户信息表的名称) 比如verification.name\u of\u user=user\u information.name

我只是想问一些关于加入表格的问题

我想知道是否有可能将两个表连接在一起,即使它们彼此之间没有关系。这可能吗?如果是的话,你能给我举个例子说明是如何做到的吗。如果没有,是否有其他方法连接或关联这两个表,即使它没有任何外键(例如:user_id)

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

例如,示例表:(假设我想使_user的验证表名称_等于用户信息表的名称)

比如verification.name\u of\u user=user\u 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();
});
用户信息表:

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();
});
检查以下查询

SELECT t1.Country,t2.* FROM table_1 as t1, table_2 as t2 where t1.id='1' and t2.id='2'

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

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

编辑:是的,您可以在“名称”属性上联接这两个表,但您必须使用sql查询,而不是雄辩的查询

SELECT v.*, u.* 
FROM verifications AS v
JOIN user_info AS u 
    ON u.name = v.name_of_user
警告
即使可能,我也不建议这样做,因为可能会有多个条目具有相同的名称/用户名称。
相反,创建一个用户表并用verifications.user\u id替换用户的verifications.name\u,用user\u info.user\u id替换用户的user\u info.name。
然后您可以在用户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方法来连接这些,因为用户id现在(如果设置正确)是外键,因此表是相关的;)

那么,如果我想从表1和表2中获取名称,我想获取国家/地区?对于这部分,t1.id='1'和t2.id='2',为什么需要它们的id?我想如果它们不相关,为什么这里仍然涉及id?它们根本不相关,没有关系,没有外键等等,我想知道是否可以为这两个表执行join语句。如果可能的话,你能从你的回答中给我举个例子吗?我知道你要求的是一个具体的桌子设计,而不仅仅是一个理论问题。在这种情况下,你能展示一下这两个表的结构吗?当然,等一下,我更新我的问题并放入一个样本表。我想我可能需要一些时间来思考一个例子,不能真正想到1哈哈哈所以。。这是一个理论问题?