【问题标题】:Laravel 5 eloquent conditional chaining queryLaravel 5 雄辩的条件链接查询
【发布时间】:2016-03-15 08:36:45
【问题描述】:

在这个简单的代码上需要帮助,我应该替换什么代码 $users = User::all(); 所以我可以有条件地链接范围方法并在最后对其进行分页?

我尝试使用$users = new User(); 启动User 对象,但出现错误,在VIEW 使用时尝试获取非对象的属性错误。

public function index()
{
    // user search

    $name = $this->request->name;
    $email = $this->request->email;

    $users = User::all();

    if (!empty($name)) {
        $users->name($name);
    }

    if (!empty($email)) {
        $users->email($email);
    }

    $users->paginate(5);

    return view('admin.users.index',compact('users'));
}

提前致谢

【问题讨论】:

  • 您是否要显示所有用户?
  • 我想在管理员点击搜索按钮时按姓名或电子邮件过滤用户

标签: laravel laravel-5 eloquent


【解决方案1】:
$users = DB::table('users');

$users = empty($email) ? $users->paginate(5) : $users->whereEmail($email)->paginate(5);

如果所有用户都有电子邮件,则无需检查姓名,因为电子邮件始终是唯一的。这种方式完成任务更快、更方便。

如果你需要检查name或其他任何东西,你可以使用这个:

$users = DB::table('users');

$users = empty($email) ? $users : $users->whereEmail($email);
$users = empty($name) ? $users : $users->whereName($name);

$users = $users->paginate(5);

【讨论】:

  • 谢谢稍后再试。我实际上想选择按名称或管理员搜索,或两者兼而有之。实际上,问题只是更复杂过滤器的示例,例如按类型和平方英尺进行的属性过滤器
  • 我已经更新了我的帖子,因此您可以在查询中添加更多 WHERE。
  • 您好,我在以下链接stackoverflow.com/a/21739314/417899找到了正确答案
  • 好吧,你自己的答案没有回答你原来的问题,也没有回答你在第一条评论中提出的第二个问题。至少你可以投票给我和 cresjie 的帖子以感谢我们的时间。
【解决方案2】:

试试这个:

$users = new User;
if( !empty($name) )
   $users->whereName($name);
if( !empty($email) )
   $users->whereEmail($email);
$users =$users->paginate(5);

【讨论】:

【解决方案3】:

我从以下链接找到了答案

https://stackoverflow.com/a/21739314/417899

例如代码:

$users = new User;

if (!empty($name)) {
    $users = $users->name($name);
}

$users = $users ->paginate(5);

【讨论】:

  • 这确实有效,我正在分页,但没有将分页结果分配回模型实例。
猜你喜欢
  • 2015-08-08
  • 1970-01-01
  • 2018-01-26
  • 2021-07-23
  • 2017-11-11
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多