【问题标题】:how can I write complex queries in eloquent Orm?如何在 eloquent Orm 中编写复杂的查询?
【发布时间】:2019-08-13 07:28:57
【问题描述】:
SELECT * FROM user_fields WHERE (SELECT CITY FROM register_expert WHERE PERMISSION=1 AND ID=user_fields.ID_USER_FIELD)='$city_save'AND TITLE_USER_FIELD='$text_search_service';

这里是register_expertimage

这里是user_fieldsmage

【问题讨论】:

  • 你定义了任何关系吗?如果是,请告诉我们
  • 你在用模型吗?
  • 不,我还没有写任何关系,但我可以定义关系@bhavinjr
  • @thisiskelvin no
  • 您首先需要定义模型和关系,然后才能使用 eloquent (orm) 查询

标签: laravel eloquent


【解决方案1】:

假设, userFields 是你的模特。

userFields::selectRaw("user_fields.ID_USER_FIELD")
            ->join('register_expert', function($join) use ($city_save){
                $join->on('register_expert.id', 'user_fields.ID_USER_FIELD')
                    ->where('PERMISSION', '1')
                    ->where('city', $city_save)
            })->where('TITLE_USER_FIELD', $text_search_service);

试试这个代码。

【讨论】:

    【解决方案2】:

    我认为 Eloquent 查询应该看起来像这样,但正如我在评论中所说,数据库和查询设计得不好,所以我认为它不会起作用,但只是让你知道如何使更复杂Eloquent 中的查询。

    $registerExperts = RegisterExperts::whereColumn('ID_USER_FIELD', 'user_fields.ID')
        ->Andwhere('PERMISSION', '=', 1)
        ->limit(1)
        ->select('city')
        ->get();
    
    $users = User::where($registerExperts->get('city') , '=', $city_save)
    ->andWhere('TITLE_USER_FIELD', '=', $text_search_service)
    ->get();
    
    

    这是一篇很好的第一篇文章,了解如何使用 Eloquent ORM 进行复杂查询:Dynamic relationships in Laravel using subqueries by Jonathan Reinink

    【讨论】:

    • 在第一行,当我使用 whereColumn 语句时,我看到这个错误: SQLSTATE[42S22]: Column not found: 1054 Unknown column ''user_fields.ID_USER_FIELD'' in 'where clause' (SQL:从register_experts 中选择city 其中ID = 'user_fields.ID_USER_FIELD'PERMISSION = 1) 无法识别'user_fields.ID_USER_FIELD'
    • 我不确定,但我认为那些交换的字段必须是另一种方式whereColumn('ID_USER_FIELD', 'user_fields.ID')。我编辑了帖子以更正此问题。
    猜你喜欢
    • 2015-12-06
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2017-12-06
    • 2012-11-30
    • 2015-02-08
    • 2014-08-18
    相关资源
    最近更新 更多