php - 想要使用外键关系获取 Laravel 中当前登录用户的数据,但给出重复的行

标签 php mysql laravel

我正在尝试使用 laravel 和 mysql 获取当前登录用户的数据,但我得到的结果是存储在数据库中的重复行。 我有三张 table 。 users表包含id作为主键,education表包含user_id作为外键,users表的主键还有一个字段research_area。第三个表是出版物表,它也包含 user_id 作为外键。现在我试图获取当前登录用户的所有出版物,包括标题、出版年份和研究领域。我的代码正在运行,但它为我提供了表中存储数据的所有结果。我的代码在这里给出。

Controller 代码是PdfController.php

   <?php

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use DB;
    use PDF;
    use Auth;

    class PdfController extends Controller
    {
        public function publicationpdf()
            {
                $user_id = Auth::user()->id;
                $data['data'] = DB::table('users')
                    ->join('publications', 'users.id', '=', 'publications.user_id')
                    ->join('education', 'users.id', '=', 'education.user_id')
                    ->select('users.id','publications.*','education.research_area')
->where('users.id',$user_id)
                    ->get();
                if(count ($data)>0){
                    return view('pdf/publicationpdf',$data);
                }
                else
                {
                    return view('pdf/publicationpdf');
                }
     }

我的 View 是publicationpdf.blade.php,其代码在此处给出。

@extends('layouts.app')
@section('content')
<div class="container"><br>


    <h4>Name: {{ Auth::user()->tname }}</h4>



    <div class="text-center">
        <h3>Publications Details</h3>
    </div><br/>
    <table class="table">
        <tr>
            <th>
                Publication Title
            </th>
            <th>Research Area</th>
            <th>Publication Year</th>
        </tr>
        @foreach($data as $value)
        <tr>
            <td>{{$value->title}}</td>

            <td>{{$value->research_area}}</td>

            <td>{{$value->year}}</td>
        </tr>
        @endforeach

    </table>


</div>

@endsection

我的路线就在这里。

Route::get('pdf/publicationpdf','PdfController@publicationpdf');

我不知道如何每行一次获取登录用户的所有出版物,但它给了我重复的行,我的意思是一行的三个副本,它不显示任何错误,但返回用户的重复数据。请帮忙。提前致谢

图片在这里 result of above running view

我的表格在这里给出。 出版物表。 publications table

最佳答案

试试这个: 您应该在用户表具有 id=logged 用户 ID 的位置添加。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use PDF;
use Auth;

class PdfController extends Controller
{
    public function publicationpdf()
        {
            $user_id = Auth::user()->id;
            $data['data'] = DB::table('users')
                ->join('publications', 'users.id', '=', 'publications.user_id')
                ->join('education', 'users.id', '=', 'education.user_id')
                ->select('users.id','publications.*','education.research_area')
                ->where('users.id',$user_id) // else it will get all rows
                ->get();
            if(count ($data)>0){
                return view('pdf/publicationpdf',$data)->with($user_id);
            }
            else
            {
                return view('pdf/publicationpdf');
            }
 }

关于php - 想要使用外键关系获取 Laravel 中当前登录用户的数据,但给出重复的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53132072/

相关文章:

javascript - 从JSON响应中过滤ng-repeat

java - 在 Spring Controller 方法中发布到远程服务器

php - 如何使用动态调用获取另一个表中的另一个值

mysql - 如何在 LEFT JOIN 到多表之后在 GROUP BY 之前进行 ORDER BY/MAX?

php mysql错误,没有上传数据

php - Laravel 中间件将变量返回给 Controller

php - mysql 日期查询得到错误答案

php - 如何渲染从 mysql 表中获取并在 php 页面中使用的多个段落?

laravel - 在 Laravel 5.2 中将变量从中间件传递到通过 Controller 查看

php - Laravel - 在 whereHas Closure 内动态访问模型属性