Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 从模型中选择几列,并从其关系表中选择几列_Laravel_Laravel 5.3_Laravel 5.4 - Fatal编程技术网

Laravel 从模型中选择几列,并从其关系表中选择几列

Laravel 从模型中选择几列,并从其关系表中选择几列,laravel,laravel-5.3,laravel-5.4,Laravel,Laravel 5.3,Laravel 5.4,用户模型 榜样 下面是我的代码,它从两个表中获取所有列。下面的代码显示了用户表中的所有列以及关系表-角色中的所有列 $data = UserModel::with("Role")->get(); 我在下面的代码中尝试从这两个表中选择几列 $data = UserModel ::select("UserName", "EmailAddress", "LastName") ->with(['Role' => function ($q) {

用户模型

榜样

下面是我的代码,它从两个表中获取所有列。下面的代码显示了用户表中的所有列以及关系表-角色中的所有列

$data = UserModel::with("Role")->get();
我在下面的代码中尝试从这两个表中选择几列

$data = UserModel
    ::select("UserName", "EmailAddress", "LastName")
    ->with(['Role' => function ($q) {
               $q->select('Role')
            }])
    ->get();
但没有起作用。它按预期从用户表中显示三列,但没有从角色表中显示相关记录的信息


有什么遗漏吗?

我想你可以试试这个:

$data = UserModel
    ::select("UserName", "EmailAddress", "LastName")
    ->with(['tblrole' => function ($q) {
               $q->select('Role')
            }])
    ->get();


希望这对您有所帮助。

我想您可以试试这个:

$data = UserModel
    ::select("UserName", "EmailAddress", "LastName")
    ->with(['tblrole' => function ($q) {
               $q->select('Role')
            }])
    ->get();

希望这对您有所帮助。

在您的with通话中,您需要从角色模型中选择主键,以便在查询后检索角色时将其附加。除此之外,在传递给with方法的闭包中选择任何其他列:

然后,您可以通过以下方式访问用户和角色:

// This will return the first user
$user = $data->first();

// This returns the entire user role model with the selected columns
$role = $user->Role;

// Access Role attributes through the Role Model
$role->Role;
在with调用中,您需要从角色模型中选择主键,以便在查询后检索角色时附加这些角色。除此之外,在传递给with方法的闭包中选择任何其他列:

然后,您可以通过以下方式访问用户和角色:

// This will return the first user
$user = $data->first();

// This returns the entire user role model with the selected columns
$role = $user->Role;

// Access Role attributes through the Role Model
$role->Role;
在您的选择中。。。。的,添加与tblUser表的主键相关的tblRole表的外键。 然后列出要获取的所有其他列

$data = UserModel
        ::select("UserName", "EmailAddress", "LastName")
        ->with(['Role' => function ($q) {
                   $q->select('RoleID', 'Role')
                }])
        ->get();
在您的选择中。。。。的,添加与tblUser表的主键相关的tblRole表的外键。 然后列出要获取的所有其他列

$data = UserModel
        ::select("UserName", "EmailAddress", "LastName")
        ->with(['Role' => function ($q) {
                   $q->select('RoleID', 'Role')
                }])
        ->get();

角色表上的键实际名为RoleID吗?是的。是罗莱德。如果你愿意,我可以发送schema。那么你有一个表roles,主键是RoleID,而不是id?角色表上的键实际上名为RoleID吗?是的。是罗莱德。如果您愿意,我可以发送schema。所以您有一个表roles,主键是RoleID,而不是id?第一部分和我在问题中写的相同。我错过什么了吗?第一部分和我在问题中写的一样。我错过什么了吗?我在with调用中也选择了RoleID列,但每个用户记录的关系始终为空。还有一点很重要……只有当我删除select语句并获取所有用户列时,您的代码才能工作。您必须将RoleID添加到UserModel select中,以便在运行查询后将角色附加到相应的用户。完美+1.认可的。赏金是urs。我在with call中也选择了RoleID列,但每个用户记录的关系始终为空。还有一点很重要……只有当我删除select语句并获取所有用户列时,您的代码才能工作。您必须将RoleID添加到UserModel select中,以便在运行查询后将角色附加到相应的用户。完美+1.认可的。赏金是我们的财富。
$data = UserModel
        ::select("UserName", "EmailAddress", "LastName")
        ->with(['Role' => function ($q) {
                   $q->select('RoleID', 'Role')
                }])
        ->get();