繁体   English   中英

从一个表中仅选择另一个表中存在的记录

[英]Selecting only records from one table that exist in another table

我正在使用October CMS为一家餐厅建立网站,并且正在使用菜单页面。

我有两个表“ Sections”和“ Menu Items”。 部分可以具有多个菜单项,但是菜单项只能具有一个部分。

我想要创建一个范围,以便如果有一个不包含任何菜单项的Section,则不会返回它。 这样一来,我在显示页面时就不会有任何空白标题。

我已经建立了我的关系。

剖面模型

public $hasMany = [

    'menuitems' => ['elnorteno2\restaurantmenu\Models\MenuItem', 'key' => 'section_id']

];

菜单项模型

public $belongsTo = [

    'section' => 'elnorteno2\restaurantmenu\Models\Section'

];

我只是不知道将Sections模型用于范围定义。

public function scopeSections($query)
{
     ??????
} 

我到处都看过,似乎无法用Google搜索正确的内容。

我会很感激的。 谢谢。

您的意思是您只想要2个表中具有相同键或ID的数据?

然后是的,您可以使用联接查询来完成。 让我给你我以前用过的例子。

table_A具有ID名称电子邮件密码

table_B的ID为user_id,order_no总计

询问

SELECT table_A.id, table_A.name FROM table_A INNER JOIN table_B ON table_A.id = table_B.user_id;

祝您编程愉快...

你可以这样写

public function scopeSections($query)
{
    return $query->has('menuitems');
} 

可能是更好的名称scopeHavingSubmenu

如有疑问请发表评论

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM