ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – 如何从Laravel的第二个表中获取重新数据?

2019-06-28 00:26:29  阅读:147  来源: 互联网

标签:php laravel laravel-5 eloquent laravel-5-2


我有两个表:用户和学生.这些表按字段连接:

users.id = studetns.user_id

我尝试使用请求获取信息:

$students = User::where(function ($query) use ($request) {

            // Filter by name
            if (($term = $request->get("name"))) {
                $query->where('name', 'like', '%' . $term . '%');
                $query->where('secondname', 'like', '%' . $term . '%');
            }

        })->with("details")->where('type', '2')->orderBy('name', 'desc')->get();
        dd($students);

您可以看到(“详细信息”),必须连接表.

我的模特用户是:

public function details()
    {
        return $this->hasOne('App\Student', 'user_id', 'id');
    }

当我执行查询时,我收到错误:

select * from `users` where `type` = 2 order by `name` desc)

这意味着没有与第二个表连接,其中有名称fiels.

解决方法:

如果name和secondname在student表中,请尝试以下操作:

$students = User::where('type', '2')
     ->with(['details' => function ($query) use ($request) {

        if (!empty($request->name)) {
            $query->where('name', 'like', '%'.$request->name.'%');
            $query->orWhere('secondname', 'like', '%'.$request->name.'%');
        }

        $query->orderBy('name', 'desc');
    }])->get();

这将加载并命令所有学生(或者,如果$request-> name变量存在,所有学生都按其值过滤).

PS:正如@ jedrzej.kurylo所说,如果你想在name列或secondname中找到名字,使用orWhere运算符是有意义的.

标签:php,laravel,laravel-5,eloquent,laravel-5-2
来源: https://codeday.me/bug/20190627/1310075.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有