2017-10-16 130 views
0

我想從我的數據庫中獲取數據,但當我嘗試從另一個表中獲取數據時,我卡住了。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

回答

0

首先添加像

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。 –

0

有很好的理解改變你的網頁的鏈接,您重定向到詳細頁:

<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