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

从参考表Eloquent Laravel 5中获取记录

徐麒
2023-03-14

首先,在我的mysql数据库中,我有两个名为“users”和“users\u details”的表,它们是相互关联的

用户表

id(PK,AI,INT),用户名(VARCHAR,UNQ),密码(VARCHAR),全名(VARCHAR)

和用户表

id(PK,AI,INT),email(VARCHAR),phone(VARCHAR),address(VARCHAR),has_record(VARCHAR),user_id(INT,FK=参考表'users.id')

还有我的模型装订。

用户模型

<?php namespace App;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements AuthenticatableContract, CanResetPasswordContract {

    use Authenticatable, CanResetPassword;

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'users';
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['username', 'email', 'password'];

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = ['password', 'remember_token'];

    public function user_details(){
        return $this->hasOne('App\users_details');
    }

}

和users_details模式

<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class users_details extends Model {

    protected $table = "user_details";


       public function ud()
       {
           return $this->belongsTo('App\User');
       }
}

我知道我可以像你一样

$data = User::find(1)->with('user_details'); //or
$data = User::find(1)->user_details;

但是我想从“用户”表中获取全名记录,这是“users_table”“user_id”外键的主要参考表,怎么样?怎么做呢?我试过了

$data = users_details::where('has_record', '=', 'no')->with('ud')->get(); //get all the records where column 'has_record' of 'users_details' is equal to 'no'
$data = $data->ud->fullname; //get the fullname

但不幸的是,不幸的是,没有工作,请提供任何帮助、想法、线索、建议、建议?

更新:

我使用查询生成器实现了它

$test = DB::table('users')
                ->join('user_details', 'users.id', '=', 'user_details.user_id')
                ->where('has_record', '=', 'no')
                ->get();

但是,有没有一种方法可以让我用雄辩的力量做到这一点呢?

共有1个答案

劳灵均
2023-03-14

你可以这样做。

根据你的代码

找到一个用户渴望加载的用户详细信息并获得名称。

$user_detail = user_details::with('ud')->find(1);
$user_detail->ud->name;

获取用户渴望加载的所有用户详细信息并获取用户名。

$user_details = user_details::with('ud')->get();

foreach($user_details as $user_detail){
   echo $user_detail->user->name;
}

如果你愿意,我有个建议给你。尽量遵循单数/复数格式,这样可以使代码更具可读性。

// User Classs.
public function user_detail(){
    return $this->hasOne('App\UserDetail');
}

// UserDetail Class.
public function user(){
    return $this->belongsTo('App\User');
}
 类似资料:
  • 问题内容: 假设有两个表: 表A 表B 表之间的联系是 messageID 字段。 我想要一个查询来生成这样的结果,在该查询中,我将所有字段从表A中拉出,并对表B中每条消息的注释数进行计数,如下所示: 我已经尝试过这样的事情: 但这是行不通的。有任何想法吗?似乎应该可以在一个查询中执行此操作。我正在使用MSSQL。谢谢你的帮助。 问题答案: 标量子查询将起作用: 与往常一样,有很多方法可以改变这只

  • 问题内容: 所以我有两个表,一个是RAWtable,另一个是MAINtable,如果存在多个记录(比较相同的名称,代码),我必须获取最新的groupID。例如,我在RAWtable上有这个: 这两个记录应视为一个,并且应仅返回此值: 该行是应插入主表中的唯一行。提供返回的最新GroupID(groupid是日期和时间的组合) 我已经尝试过了,但是没有用: 我怎样才能做到这一点?多谢。 问题答案:

  • 问题内容: 我有一个表 的学生 这样 我想获取所有记录,但不应重复邮政编码。因此,在上述表记录的情况下,应获取记录1和2。将不会提取第3条记录,因为它的邮政编码已在第1条记录中。 问题答案: 以下查询将仅选择不同的“ zip”字段。 以下查询将选择所有字段以及不同的zip字段。

  • 我遵循了Spring Boot参考指南,得到了这个错误 这是密码

  • 问题内容: 我需要递归地对子矩阵进行并行处理(将原始矩阵分为4个并传递给一个方法)。矩阵存储为2D数组。我不能每次都将元素复制到一个新的矩阵,因为事实证明这是非常昂贵的。是否有某种方式可以引用Java中的子矩阵? 也许,这个问题不清楚,我在[这里]http://codingdict.com/questions/131438)没有得到答案。 问题答案: 我将为数据编写一个包装器,并将其称为Matri

  • 我刚开始使用firebase作为我的Flatter应用程序的后端,我有一个问题:如何将两个文档链接在一起,同时获取这两个数据。例如,我有一个用户集合和一个帖子集合。我如何链接这两个文档,当我获取帖子数据时,我也会在相同的响应中获取用户数据