时间戳转换器

用于原始 SQL 查询的等效 Laravel Eloquent

日期:2023-02-16     浏览:317    
【中文标题】用于原始 SQL 查询的等效 Laravel Eloquent【英文标题】:Equivalent Laravel Eloquent for raw SQL query 【发布时间】:2021-02-02 13:50:04 【问题描述】:

我最近开始学习 php 和 laravel 框架。目前我正在学习 Eloquent 查询来存储和检索数据库中的数据。我能够执行简单的选择、插入等查询,但是我试图理解更复杂的语句,包括连接。

这是我要翻译的查询,例如: $sql = "SELECT p.id , p.name" from clients c INNER JOIN partners p ON c.id = p.p_id where p.id = :param";

这可以正常工作并提供输出,但是转换后的 Eloquent 不提供相同的输出。这个原始 SQL 查询到 Laravel Eloquent 的正确转换是什么?另外,如果您对 Eloquent 中的联接有一点了解,我们也将不胜感激。

这是我尝试过的:

DB::table('clients as c')
     ->join('partners as p', 'c.id', '=', 'p.c_id')
     ->where('p.id', '=', ':param')
     ->select('p.id' , 'p.name')
     ->get();

【问题讨论】:

【参考方案1】:

最后的参数是您传递给查询构建器的变量...

对于join,非常简单易懂

DB::table('clients as c')
     ->join('partners as p', 'c.id', '=', 'p.c_id')
     ->where('p.id', '=', $paramerterVariable)
     ->select('p.id' , 'p.name')
     ->get();

【讨论】:

这是一个错字,因为我是手写的。更新 谢谢。有效。我给了它错误的参数。 :)【参考方案2】:
Client::join('partners as p', 'clients.id', '=', 'p.p_id')->where('p.id',  $paramerterVariable)
->where('client_id', $clientId)
            ->select('p.id' , 'p.name')
            ->get();

p.p_id应该是合作伙伴表中的client_id

这是用于原始 SQL 查询的 Laravel Eloquent,或者您也可以将 laravel 关系与延迟加载和急切加载一起使用

$client = Client::where('id', $clientId);
$partners = $client->partners();

【讨论】:

相关文章

Laravel 查询构建器 - 如何按别名分组,或进行原始 groupBy

{】Laravel查询构建器-如何按别名分组,或进行原始groupBy【英文标题】:Laravelquerybuilder-Howtoeithergroupbyalias,ordorawgroupBy【发布时间】:2015-06-0421:45:51【问题描述】:我的Laravel5应用包含一个动态查询生成器,用于运行报表。我需要一...}

在 Laravel 4 中转义原始 SQL 查询

{】在Laravel4中转义原始SQL查询【英文标题】:EscaperawSQLqueriesinLaravel4【发布时间】:2013-09-2720:46:39【问题描述】:如何在Laravel4中转义传递给原始查询的参数?我期待像DB::escape()之类的东西(它从Laravel3中敲响了钟声)并且还尝试...}

在 Laravel 5 Eloquent 中获取原始 SQL 查询的结果

{】在Laravel5Eloquent中获取原始SQL查询的结果【英文标题】:GetresultofrawSQLqueryinLaravel5Eloquent【发布时间】:2015-07-1312:02:04【问题描述】:我需要帮助才能从我的原始SQL查询构建Laravel查询。我尝试了很多方法,但没有找到我的运气。...}

Laravel 原始 SQL 查询,具有多次出现的命名绑定

{】Laravel原始SQL查询,具有多次出现的命名绑定【英文标题】:LaravelRawSQLQuerieswithnamedbindingsformultipleoccurences【发布时间】:2020-03-2900:39:28【问题描述】:我正在使用DB外观和选择方法来运行带有绑定的原始SQL查询。只需要知道我...}

如何在 Laravel 6 中转换原始 sql 查询?

{】如何在Laravel6中转换原始sql查询?【英文标题】:HowtoconvertarawsqlqueryinLaravel6?【发布时间】:2021-01-1603:19:12【问题描述】:我有一个在HeidiSQL中运行良好的查询。现在我需要在Laravel中编写相同的查询。但它并没有返回我在HeidiSQL...}

如何在 Laravel 7 中使用原始 SQL 查询创建范围?

{】如何在Laravel7中使用原始SQL查询创建范围?【英文标题】:HowtomakeascopewitharawSQLqueryinLaravel7?【发布时间】:2021-07-0922:15:41【问题描述】:问题我正在尝试使用此SQL查询在我的模型中创建一个范围:SELECT*FROMro_container_eventsWHERE(cont...}

用于原始查询的 Laravel 批量插入

{】用于原始查询的Laravel批量插入【英文标题】:Laravelmassinsertforrawquery【发布时间】:2018-10-2305:44:43【问题描述】:我有原始查询:INSERTINTOemployee(fk_country_id,employee_id,fk_city_id,password,role,email,joined_at,resigned_at,created_at,updated_at)VALUES(}

Laravel 5 原始选择查询不返回任何内容

{】Laravel5原始选择查询不返回任何内容【英文标题】:Laravel5rawselectquerydoesn\'treturnanything【发布时间】:2017-10-2014:36:24【问题描述】:我正在尝试从数据库中检索数据,我需要将sql作为原始查询运行,我就是这样做的:$var=Nuti::sel...}

DB::update laravel 5 原始查询

{】DB::updatelaravel5原始查询【英文标题】:DB::updatelaravel5rawquery【发布时间】:2017-11-1711:03:13【问题描述】:我打算使用laraveldbupdate,相当于sql。updateuserssetusername="admin",status="active"whereuser_id=1这是我测试运行的查询。有错吗?$userna...}

Laravel 5:如何转储 SQL 查询?

{】Laravel5:如何转储SQL查询?【英文标题】:Laravel5:HowtodumpSQLquery?【发布时间】:2017-05-0919:04:13【问题描述】:Laravel5的内置解决方案在Laravel5+中,我们可以使用\\DB::getQueryLog()来检索所有已执行的查询。因为,查询日志是一项广...}

Copyright ©2021 时间戳转换器 小常识 114pp | 陕ICP备18005036号