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

通过外键从连接表检索数据-Laravel

陆宾白
2023-03-14

我试图从一个连接表中获取数据并显示它,所以我有一个用户表和我的连接表。处方用户表具有用户id和处方id。

所以我要做的是在这个userdetails页面上,显示所有的用户处方,并访问处方名称和描述等,但是当我尝试任何一种方法时,我会得到“尝试获取非对象的属性”

我认为,用户模型与处方用户模型有很多关系,处方用户模型与用户模型有一个归属关系。

控制器

function viewUserDetails($userId)
    {
        $logged_user_id = Auth::user()->id;
        $user = User::find($logged_user_id);
        $prescriptions = Auth::user()->prescription_user;

        $fullname = $user->firstname ." ". $user->surname;
        $email = $user->email;
        $address = $user->address;
        $postcode = $user->postcode;
        $dob = $user->dateofbirth;
        $uniquepatientnumber = $user->uniquepatientnumber;





        $data = [];
        $data['fullname'] = $fullname;
        $data['email'] = $email;
        $data['address'] = $address;
        $data['postcode'] = $postcode;
        $data['dateofbirth'] = $dob;
        $data['uniquenumber'] = $uniquepatientnumber;
        $data['prescriptions'] = $prescriptions;


        return view('user/userdetails')->withData($data);`

用户详细信息刀片

@extends('layouts.master')
@section('title', 'My Details')
@section('content')
<h1>My Details </h1>
<ul>


<li>Name: {{ $data['fullname'] }}</li>
<li>Email: {{ $data['email'] }}</li>
<li>Address: {{ $data['address'] }}</li>
<li>Postcode: {{ $data['postcode'] }}</li>
<li>Date of Birth: {{ $data['dateofbirth'] }}</li>
<li>Your Unique number is: {{ $data['uniquenumber'] }}</li>


<li>Your are currently prescribed {{$data['prescriptions']}}</li>

<p>Note: If you believe any of these are incorrect please contact a receptionist</p>

</ul>



@endsection``

共有2个答案

端木桐
2023-03-14

首先,我不确定withData()是否是一件事。只是-

第二,在函数的开头有一些混乱。您传入一个从未使用过的$userId。然后从Auth::user()获取id,然后获取一个具有该id的用户,您已经拥有了该id。所以只要$user=Auth::user();

第三,你只有在尝试使用-

由于您首先从Auth::用户获得了用户,我猜它在Auth::user()-

但是如果我用这个密码

Route::get('/', function () {
    $user = \Auth::user();
    die($user->name);
    return view('welcome');
}

在没有Auth::user()的情况下(我甚至还没有登录),我得到以下输出:

ErrorException in web.php line 16:
Trying to get property of non-object
1. in web.php line 16
2. at HandleExceptions-> ... array('user'=>null)

所以很可能。

商品
2023-03-14

您所解释的内容存在一些设计缺陷。您有一个用户模型和一个处方模型。这意味着prescription\u user是您的数据透视表(而不是连接表)。如果到目前为止我是正确的,这意味着用户和处方有多对多的关系。为了证明我的观点,你说

处方用户表具有用户id和处方id。

这意味着用户是数据透视表。

在用户模型中,定义与处方的多对多关系。反之亦然。

用户模型

public function prescriptions() {
    return $this->belongsToMany(Prescription::class, 'prescription_user', 'user_id', 'prescription_id');
}

然后你可以像这样改变你的控制器功能

public function viewUserDetails()
{
    $user = Auth::user();
    $prescriptions = $user->prescriptions;

    return view('user/userdetails', compact('user', 'prescriptions'));
}

你的看法呢

@extends('layouts.master')
@section('title', 'My Details')
@section('content')
    <h1>My Details </h1>

    <ul>
        <li>Name: {{ $user->firstname }} {{ $user->surname }}</li>
        <li>Email: {{ $user->email }}</li>
        <li>Address: {{ $user->address }}</li>
        <li>Postcode: {{ $user->postcode }}</li>
        <li>Date of Birth: {{ $user->dateofbirth }}</li>
        <li>Your Unique number is: {{ $user->uniquepatientnumber }}</li>
    </ul>

    Your are currently prescribed
    <ul>
        @foreach($prescriptions as $prescription)
            <li>{{ $prescription->name }}
        @endforeach
    </ul>

    <p>Note: If you believe any of these are incorrect please contact a receptionist</p>

@endsection

你的代码会更简洁更有效

最新消息

从数据透视表获取数据相对简单。在关系中定义这些列

public function prescriptions() {
    return $this->belongsToMany(Prescription::class, 'prescription_user', 'user_id', 'prescription_id')->withPivot('column1', 'column2');
}

在您的视图中,您可以这样显示它

{{ $prescription->pivot->column1 }} {{ $prescription->pivot->column2 }}
 类似资料:
  • 如何在Laravel中检索数据。 我有表用户,其中我有字段parent_id,其中我显示其user_id的信息。 现在我想显示已登录用户的信息 我试过这个 我得到了选定的parent_id,现在我想要user_id的名字。 我在试这个 它得到一个错误。请告诉我如何在我的代码中写这个来获得父id的名称。

  • 我一直在试图找到通过外键从记录中获取所有数据的正确方法。我有一个简单的应用程序,用户可以将书籍添加到他们的“书架”。 这是我的桌子: 使用者 书 书架 BOOKSHELF_BOOKS 在我雄辩的模型中,一个有许多书,而属于,我已经在我的模型中设置了这些书。 用户创建一个“书架”并从图书列表中向其中添加图书。 我现在需要在书架上渲染用户的书籍。 当我使用类似bookshelf::find($id)的

  • 我有4个实体列在下面的职位。客户端和产品已在数据库中。问题在于订单和订单产品。我创建Orders对象,然后添加客户机(已经在数据库中)和OrdersProducts的ArrayList,但出现了错误: 当我不添加客户机时,数据库中只有OrderProducts的ArrayList,但OrderProducts没有外键。怎么了?我使用Mysql服务器和hibernate。

  • 问题内容: 我有两个表,一个叫,一个叫。 这个想法是,客户表包含核心客户数据,并且可以根据应用程序的用途对应用程序进行自定义以支持其他属性。 有以下3列: 我是否可以检索整行,如果指定了其他任何属性,如果没有,则默认为NULL?我正在使用以下查询,但只有两个属性都存在于customer_attributes表中时,它才有效。 在这种情况下,我感兴趣的两个属性称为“ wedding_date”和“

  • 你能帮我连接两个数据帧吗。 我有两个数据帧。 DF1: DF2: 我需要基于前两个数据帧创建一个数据帧,左连接两列。列index和val2在两个数据帧中具有相同的名称。df3的结果应该如下所示: 应该删除df1中不存在的df2中的索引,如果df1中的索引具有与df2中相同的val2,则应该将1添加到新的列val3中,否则:NaN。 非常感谢提前!

  • 我想从数据库中检索整个表并将其显示到我的jsp页面中,但我得到了一个错误 我的工作人员豆。java是 而我的getAllDetailDAO.java是 连接提供程序包com.staff.db; 而我的DisplayAllDetail.jsp是 我的错误是 StackTrace:org.apache.jasper.servlet.jspServletwrapper.handleJSPExceptio