【问题标题】:Laravel list issueLaravel 列表问题
【发布时间】:2016-05-04 13:57:14
【问题描述】:

我有以下直接链接到下拉列表的查询。但是,如果我 lists()join() 它给出了

错误:“id”不明确

代码:

Company::join('users', 'users.company_id', '=', 'companies.id')
                    ->distinct()
                    ->where('companies.name', 'NOT LIKE', '%XXXX%')
                    ->lists('name', 'id');

lists() 有什么解决方案?任何帮助都是真正的帮助。

【问题讨论】:

标签: sql laravel eloquent


【解决方案1】:

两个表都包含一个id 字段。此处的解决方案是将表名添加到您要列出的 id 字段之前。例如:

Company::join('users', 'users.company_id', '=', 'companies.id')
    ->select(
        'companies.name as companyName',
        'companies.id as companyID'
    )
    ->distinct()
    ->where('companies.name', 'NOT LIKE', '%XXXX%')
    ->lists('companyName', 'companyID');

【讨论】:

  • 它给出了这个:未定义的属性:stdClass::$companies.id
  • 现在我得到未定义的属性:stdClass::$companyName
  • Company::join('users', 'users.company_id', '=', 'companies.id') ->select( 'companies.name as companyName', 'users.id as companyID' ) ->distinct() ->where('companies.name', 'NOT LIKE', '%XXXX%') ->lists('companyName', 'companyID');
【解决方案2】:

显示错误是因为您在两个表中都有id 列。我不知道你需要哪个表的 id。在这个答案中,我假设您不需要userid,所以我将其声明为uid。所以,只有一个名为id 的列属于companies 表。

Company::join('users', 'users.company_id', '=', 'companies.id')
    ->distinct()
    ->where('companies.name', 'NOT LIKE', '%XXXX%')
    ->select('users.id as uid','companies.id','companies.name')
    ->lists('name', 'id');

【讨论】:

  • 我得到未定义的属性:stdClass::$name
  • companies 表中有name 字段吗?
  • 是的!我有一个姓名字段
  • 你能显示你的刀片代码你在哪里调用这个查询?
【解决方案3】:

试试这个代码:

  DB::table('companies')->distinct()->join('users',function($join){
            $join->on( 'users.company_id', '=', 'companies.id')
                ->where('companies.name', 'NOT LIKE', '% %');
        }) ->lists('companies.name');

附:对我来说很好用

【讨论】:

  • 我调用未定义的方法 Laravel\Database\Query\Join::where()
  • DB::table('companies')->distinct()->join('users',function($join){ $join->on('users.company_id', '= ', 'companies.id')->where('companies.name', 'NOT LIKE', '%XXXX%'); })->lists('companies.name', 'companies.id');
  • 我在 laravel 4.2 上试了一下,你的版本是多少?
  • 不幸的是,我正在使用 laravel 3,该系统是使用 Laravel 3 创建的
猜你喜欢
  • 2013-01-07
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-14
  • 2013-07-04
相关资源
最近更新 更多