查询具有关系的模型字段

问题描述

我有两个模型,用户模型和枚举器。我想搜索枚举数模型中的某些列及其在用户模型中的关系。这是我所拥有的;

枚举器

  • unique_id

用户

  • 名字

我想编写一个查询,该查询将在同一集合中同时获取unique_id和first_name。

这是我所拥有的;

Enumerator::with(['user' => function($query) {
       $query->select('id','first_name','last_name','email');
}])->get(['first_name','unique_id']);

我该怎么办?

解决方法

如果您想在同一个集合中获得多个表列,最好在此处使用join query

$joinTableName = (new App\User())->getTable();
$fromTableName = (new App\Enumerator())->getTable();
$foreignKey = "enumerators_id"; //user table set foreign key
$localKey = "id";  //enumerators table column local key

$selectColumns = [
    "{$joinTableName}.first_name","{$fromTableName}.unique_id",];

$a = App\Enumerator::select($selectColumns)
    ->join(
        $joinTableName,"{$joinTableName}.{$foreignKey}",'=',"{$fromTableName}.{$localKey}"
)->get();

dd($a);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...