我正在尝试使用 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');
我不知道如何每行一次获取登录用户的所有出版物,但它给了我重复的行,我的意思是一行的三个副本,它不显示任何错误,但返回用户的重复数据。请帮忙。提前致谢
最佳答案
试试这个: 您应该在用户表具有 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/