2015-11-04 59 views
0

我有這張表,其中有4個id與其他表相關。使用laravel顯示列表中的列表表格的值5

表列表:

id table1_id table2_id table3_id table4_id 
    1 2    3  2   1 
    2 1    4  3   3 

我現在要輸出與該表的ID的價值

id table1_name table2_name table3_name table4_name 
    1 jay   student  singer  actor 
    2 jeane   teacher  drummer  actress 

ListController:

 public function index() 
{ 
    $res = ListModel::with('table1','table2','table3','table4')->get(); 

    $foreach($res as r){ 

     return $r->table1_name; 
    } 

    return view('list.index',compact('res')); 
} 

我在這裏的問題是,輸出將是空的,而不是傑伊。我現在可以顯示的值?請幫助..

名單表

public function up() 
{ 
    Schema::create('list_table', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('table1_id'); 
     $table->string('table2_id'); 
     $table->string('table3_id'); 
     $table->string('table4_id'); 
     $table->timestamps(); 
    }); 
} 

//附加信息

表1型號

public function list(){ 
    return $this->belongsTo('App\ListModel'); 
} 

列表模型

public function table1(){ 
    return $this->hasMany("App\Table1",'id','table1_id'); 
} 

更新值

id crime_type_id crime_name_id crime_suspect_id crime_victim_id 
    1    1    1     1     1 

預期輸出:

crime_type_des  crime_name_des crime_suspect_name victim_name 
    against property theft    Mcdonald    Hillary 

ReportController:

 public function index() 
{ 
    $display_crime = CrimeReport::all(); 


    return view('crimereports.index',compact('display_crime')); 
} 

report_table:

public function up() 
{ 
    Schema::create('crime_reports', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('crime_type_id'); 
     $table->string('crime_name_id'); 
     $table->string('suspect_id'); 
     $table->string('victim_id'); 
     $table->timestamps(); 
    }); 
} 

//附加信息

CrimeName模型

public function crimeReport(){ 
    return $this->belongsTo('App\CrimeReport'); 
} 

犯罪報表模型

public function crimeName(){ 
    return $this->hasMany("App\CrimeName",'id','crime_name_id'); 
} 

//休息了CrimeReportController

public function index() 
{ 
    $display_crime = CrimeReport::all(); 

    return view('crimereports.index',compact('display_crime')); 


} 

/** 
* Show the form for creating a new resource. 
* 
* @return \Illuminate\Http\Response 
*/ 
public function create() 
{ 
    $display_crime_type = CrimeType::lists('crime_type','id'); 
    $display_crime_name = CrimeName::lists('crime_description','id'); 
    return view('crimereports.create',compact('display_crime_type','display_crime_name')); 
} 

/** 
* Store a newly created resource in storage. 
* 
* @param \Illuminate\Http\Request $request 
* @return \Illuminate\Http\Response 
*/ 
public function store(CrimeNewReportRequest $request) 
{ 
    $input = $request->all(); 
    CrimeReport::create($input); 

    return redirect()->back()->withSuccess("Fields were inserted!");; 
} 

回答

0

更改你的關係定義如下:

表1型號

public function list(){ 
    return $this->hasMany('App\ListModel'); 
} 

列表模型

public function table1(){ 
    return $this->belongsTo("App\Table1"); 
} 

您需要更新如下索引方法,你可以轉儲$行檢查,如果這項工作。

ListController

public function index() 
{ 
    $res = ListModel::with(['table1','table2','table3','table4'])->get(); 
    $rows = []; 
    $foreach($res as r) { 
     $rows[] = [r->table1->name, r->table2->name, r->table3->name, r->table4->name]; 
    } 
    dd($rows); 
} 
+0

感謝您的答覆,但我仍然得到空值。 –

+0

輸出未定義屬性:Illuminate \ Database \ Eloquent \ Collection :: $ name; –

+0

啊它的工作,但輸出仍然null.hehe –

0

原始模型您訪問table1_name改變_到 - >($ R-> table1->名稱)

編輯: 現在,它開始變得更可讀。這是我認爲的關係應該是。

CrimeReport.php

public function crimeType() 
{ 
    return $this->belongsTo(CrimeType::class); 
} 

public function crimeName() 
{ 
    return $this->belongsTo(CrimeName::class); 
} 

public function suspect() 
{ 
    return $this->belongsTo(Suspect::class); 
} 

public function victim() 
{ 
    return $this->belongsTo(Victim::class); 
} 

有確實似乎不是一個需要界定的任何有關係的逆向右走,如果需要以後出現再加入他們,但沒有點製作關係只是因爲它的存在。

現在爲了讓報表容易讓我們使用一些連接,或者加載。

CrimeReportController.php

public function index() 
{ 
    $results = CrimeReport::query() 
     ->join('crime_types as ct','ct.id', '=', 'crime_reports.crime_type_id') 
     ->join('crime_names as cn','cn.id', '=', 'crime_reports.crime_name_id') 
     ->join('suspects as s','s.id', '=', 'crime_reports.suspect_id') 
     ->join('victims' as v','v.id', '=', 'crime_reports.victim_id') 
     ->get([ 
      'crime_report.*', //to get ids and timestamps 
      'ct.name as crime_type', 
      'cn.name as crime_name', 
      'suspect.name as suspent_name', 
      'victim.name as victim_name' 
     ]) 

    dd($results->toArray()); 
} 

現在$結果仍然會CrimeReport的集合,所以你仍然可以訪問所有你可能想扔在那裏的模型東西。除此之外,你也已經有了你的表格,你可以把它們打印到一個html表格中,並且你有你的報告。

如果你想一些很酷搜索的東西添加到查詢,那麼你可以使用whereHas做到這一點:

//this would just go before the get() 
$query->whereHas('suspect', function($q){ 
    $q->where('hair_color','=','brown') 
     ->whereBetween('height',5.8,6) 
}) 

當然,你可能還需要作一些那些leftJoins,而不是因爲我以爲他們將不會都有受害者/嫌疑人

+0

有人可以提供這個解決方案。我很難解決問題。 –

+0

沒有看到表格模式,我不能確切地說出它應該是什麼,但你肯定需要將下劃線更改爲「 - >」 – RDelorier

+0

感謝您的答覆。是的,我改變了,但是我得到一個錯誤未定義的屬性Illuminate \ Database \ Eloquent \ Collection :: $ name –