加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 19:43:04 所属栏目:大数据 来源:网络整理
导读:我有两个表:用户和学生.这些表按字段连接: users.id = studetns.user_id 我尝试使用请求获取信息: $students = User::where(function ($query) use ($request) { // Filter by name if (($term = $request-get("name"))) { $query-where('name','like','%
我有两个表:用户和学生.这些表按字段连接:

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','%' . $term . '%');
            }

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

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

我的模特用户是:

public function details()
    {
        return $this->hasOne('AppStudent','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','%'.$request->name.'%');
            $query->orWhere('secondname','%'.$request->name.'%');
        }

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读