laravel中一对多关系中的数据获取

问题描述:

我想从我的数据库中获取数据,但当我尝试从另一个表中获取数据时,我卡住了。laravel中一对多关系中的数据获取

这是我想要做的,当一个用户登录到网页时,他将能够看到一个人名列表。通过点击他们的名字,用户将被重定向到另一个页面,该页面将显示个人详细信息,如姓名,地址和电子邮件。但是,因为有这么多的(假设200人左右)

问题:

Q1。如何将用户重定向到另一个名称(例如:插孔,用户点击插孔名称,插孔ID = 1,我如何将其与用户ID = 1相关联,即外键)

Q2。我怎么做一个循环来获取他们的信息,而不是一个一个地指定它(例如:我不想说id = 1,是否有像id ++这将有助于自动添加)

这就是它看起来像我的代码:(图片我从网上花了,但与此类似) enter image description here

home.blade.php

<table class="table table-bordered"> 
     <tr> 
     <th><strong><big>Name AS PER NRIC/PASSPORT: </big></strong></th> 
     </tr> 
     <td> 
     <tr> 
     @foreach($data as $value) 
     <tr>  
     <th><a href="www.google.com"> {{$value->Name}}</a></th> --> I don't know how to redirect it to show user details    
     </tr> 
     @endforeach 
     </tr> 
     </tr> 
    </table> 

控制器

public function index() 
    { 
     return view('home'); 
    } 
    public function getData(){ 
     $data['data'] = DB::table('personal_infos')->get()->sortByDesc('upload_time'); 
     if(count($data)>0){ 
     return view('home',$data); 
}else{ 
    return view('home'); 
} 
} 
} 

路线

Route::get('/test','[email protected]'); 

的personal_info模型

class personal_info extends Eloquent 
{ 
    protected $fillable = array('Email', 'Name', 'address'); 
    protected $table = 'personal_infos'; 
    protected $primaryKey = 'id'; 
    public function user_infos() { 
     return $this->hasMany('App\user_info,'user_id'); 
    } 
     public function user_info1s() { 
     return $this->hasMany('App\user_info1','user_id'); 
    } 
} 

USER_INFO和user_info1模型

class user_info1 extends Eloquent 
{ 
    protected $fillable = array('hobby','sport','user_id'); 
    public function personal_infos() { 
     return $this->belongsTo('App\personal_info', 'user_id', 'id'); 
    } 
+0

'personal_infos ::与( 'user_info1s') - > get()方法'? – madalinivascu

+0

@madlinivascu我已经尝试过了,但它只适用于技术升级,我想根据不同表中的用户ID获取数据 – blastme

首先添加像

Route::get('/test/{id}','[email protected]')->name("showPerson"); 

然后建立一个重定向路由

<a href="{{route('showPerson', $value)}}"> 

使用该行,而不是您的href =“www.google.com”

让getPerson()从返回的TestController一个新的页面,在该页面上,打印出一个人的所有信息。

我也建议你谷歌Laracast并观看所有的免费视频。他们是约30,他们给你的laravel框架

+0

,但是如何将它重新组合在一起?例如,来自personal_infos表的Jack名称与user_infos和user_info1s表链接。我只知道如何通过视图文件夹做到这一点,但不是在控制器 – blastme

+0

我知道我需要做一些像SELECT * FROM user_infos,user_info1s,personal_infos WHERE user_id = personal_infos id(sry我不记得如何写这部分)但你应该知道我的意思 – blastme

+0

假设$值是杰克。 Laravel已经选择了所有的对象将所有的数据。因此获取user_infos就像在正确的值上说$ value-> user_infos一样简单。尝试转储您的testController中的人数组。这会给你一个关于所有人和他们的对象拥有的所有信息的概述。 同样,我强烈建议您在继续之前花时间观看Laravel上的Laracast系列。他们有免费的高质量教程,可以帮助你更好地理解Laravel。 –

有很好的理解改变你的网页的链接,您重定向到详细页:

<th><a href="{{route('user.show',['id'=>$value->id])}}"> {{$value->Name}}</a></th> 

路径应该是:

Route::get('user/show/{id}','[email protected]')->name("user.show"); 

控制器应该是:

public function getInfo($id) { 
    $user_info1 = user_info1::where('user_id',$id)->get(); 
    return $user_info1;//change this with your view 
} 
+0

但是如果有另一张桌子呢?例如user_infos表和user_info1s表数据,我想根据personal_infos表中的id – blastme

+0

得到他们两个,然后再向db'$ user_infos table = user_infos table :: where('user_id',$ id)添加一个调用, - > get();' – madalinivascu

+0

并且你同时返回 – madalinivascu