首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何返回包含空外键值的所有联接表

如何返回包含空外键值的所有联接表
EN

Stack Overflow用户
提问于 2019-01-26 19:36:18
回答 1查看 1.2K关注 0票数 1

我想连接两个表,但它只返回未为空的外键列。

它只会显示如果我使用1作为默认值给all,并且在外文id 1行中不放任何东西看上去它是空的,但问题是如果我更新一个具有默认值1值的行,它将用1值更新所有的外来id,我不希望这种情况发生。

代码语言:javascript
运行
复制
$unit = DB::table('franchises')
       ->join('units', 'franchises.id', '=', 'units.franchise_id')
       ->orderBy('units.created_at', 'desc')->paginate(20);

return view('register-unit', compact('unit'));

我有一个迁移查询

代码语言:javascript
运行
复制
$table->integer('franchise_id')->unsigned()->default(null); 
$table->foreign('franchise_id')->references('id')->on('franchises')->onDelete('cascade')->onUpdate('cascade');

我希望它使所有外键为空作为默认,并仍然可以返回所有使用联接。我怎样才能做到呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-27 00:13:28

你有一个关系,每一个单位可能与一个专营权。您可以使用LEFT JOIN将一个表用作起点,并在另一个表上进行可选匹配。如果关系不匹配,则第二个查询的列将为空。

实际上,您的查询返回与一个单元相关的所有专营权。你可以选择这种关系。

代码语言:javascript
运行
复制
DB::table('franchises')
    ->leftJoin('units', 'franchises.id', '=', 'units.franchise_id')
    ->orderBy('units.created_at', 'desc')->paginate(20);

但是,由于您将变量命名为unit,并且也在按units.created_at对查询结果进行排序,我认为您希望提取所有单元,并选择相应的专营权。如果是这样的话,您应该以相反的方式LEFT JOIN

代码语言:javascript
运行
复制
DB::table('units')
    ->leftJoin('franchises', 'franchises.id', '=', 'units.franchise_id')
    ->orderBy('units.created_at', 'desc')
    ->paginate(20);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54382020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档