当前位置: 首页 > 知识库问答 >
问题:

关于相关模型领域的Laravel雄辩搜索

壤驷文华
2023-03-14

我有一个雄辩的模特,

用户:用户(id、用户名、密码、电子邮件、状态)

简介:简介(id、用户id、名字、姓氏、性别、出生日期)

在控制器逻辑中,我急切地加载Profile模型。

我能做到,

$user = User::with('Profile')->get();

$user = User::with('Profile')->where('status', '1')->get();

但是怎么做呢,

$user = User::with('Profile')->where('status', '1')->where('gender', 'Male')->get();

共有2个答案

包和泰
2023-03-14

如果要在关系模型中搜索多个列。

        $searchText = 'test text';
        Product::with('owner')->where(function($query) use ($searchText)
        {
            $query->where('product_name', 'LIKE', '%' . $searchText . '%');

            $columns = ['product_code', 'place_location', 'remark'];

            foreach ($columns as $column ) {
                $query->orWhere($column, 'LIKE', '%' . $searchText . '%');
            }

            $query->orWhereHas('owner', function($q) use ($searchText) {
                $q->where(function($q) use ($searchText) {
                    $q->where('name', 'LIKE', '%' . $searchText . '%');
                    $q->orWhere('company_name', 'LIKE', '%' . $searchText . '%');
                });
            });

        });
司马彬
2023-03-14

这就是whereHas派上用场的地方:

$user = User::with('Profile')->where('status', 1)->whereHas('Profile', function($q){
    $q->where('gender', 'Male');
})->get();

基本上,它添加了一个条件,即用户需要一个gender=Male

 类似资料:
  • 我有两张桌子。 产品品牌 我试图用最多的产品返回前十大品牌型号。 我试过了。 但是它不返回孔模型,只返回 品牌 计数 我也试过 但是我得到了错误: SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“brands.id”(SQL:选择count(*)作为从whereid=

  • 我有以下三个表格: 所以基本上这种关系就像: 用户有许多项目 项目属性到客户端 我的问题是: 如何使用eloquent获得用户的所有客户端? 似乎我不能用户hasManyPass方法,因为在客户端表中没有project_id。 因此,我希望达到的目标是:

  • 我有三种模式——博客、帖子、评论。博客有很多帖子,帖子有很多评论 当我写作时 它会给所有的博客发帖子和评论。但我将如何获得那些由管理员用户创建的博客,即评论表中的用户id。在哪里写入

  • 我是Laravel5.2的新手,正在开发一个遗留系统,对雄辩有点困惑,希望有人能给我代码。 共有3个表格: 卡片类别卡片2类 卡片可以是许多类别的一部分,这些类别保存在cards2cat表中。 cards2cat表的结构如下 id(主键)图像(卡)类别 我想做的是在Cards模型中有一个方法,名为getCardsWithCategors,它返回Cards信息和category表中类别的名称。 ca

  • 我正在编写php代码,对于当前的项目,我正在使用laravel框架(带有雄辩的ORM)。在这个项目中,我创建了两个表:用户和任务。我想在这些表之间创建一个“一对多”的关系。因此,一个用户可以有许多任务。在Tasks类中,我创建了方法所有者(): 但是当我以前得到用户名的时候 我得到这个异常:未定义的属性:illumb\Database\Eloquent\Relations\BelongsTo::$

  • 我有以下2张表: 我想显示所有的汽车,由desc订购,但也由从透视表订购。修复的条目可以具有许多特定的。 所以如果是created_at,并且是created_at,但是修复中的在,我想显示BEFORE,因为关系是较新的。 我也不想从关系表中加载数据。 我试过以下方法: 和 ^此查询返回修复表中的所有项,即使字段为。我不能把他们分组。