gpt4 book ai didi

php - 如何从 Laravel 中的第二个表中获取相关数据?

转载 作者:可可西里 更新时间:2023-10-31 23:16:53 24 4
gpt4 key购买 nike

我有两个表:usersstudents。这些表由字段连接:

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);

可以看到with("details"),必须连接表。

我的模型用户是:

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

当我执行查询时出现错误:

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

这意味着没有连接到第二个有 name 字段的表。

最佳答案

如果 namesecondnamestudents 表中,试试这个:

$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();

这将加载和排序所有 students(或者,如果 $request->name 变量存在,所有 students 按它的值过滤) .

PS:正如@jedrzej.kurylo 所说,如果您想在 nameor 中查找名称,使用 orWhere 运算符是有意义的在 secondname 中。

关于php - 如何从 Laravel 中的第二个表中获取相关数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39305309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com