![](/img/trans.png)
[英]How to sort laravel eloquent child relation and get the ordered parent data
[英]How to get data through eloquent relation
我得到了這種形式,您可以在其中選擇一個客戶端,並將client_id插入數據庫
<div class="form-group">
<label for="clientId">Client</label>
<select name="client_id" class="form-control">
@foreach($clients as $client)
<option value="{{$client->client_id}}">
{{$client->client_name}}
</option>
@endforeach
</select>
</div>
<div class="form-group">
<button type="submit" class="btn btn-success">Submit</button>
</div>
我的項目負責人是這個
public function index()
{
return view('projects.index', [
'projects' => Project::all(),
'client' => Client::all(),
]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
if (Auth::user()->role != 'admin') {
return redirect()->back();
} else {
return view('projects.create',[
'project' => new Project,
'clients' => Client::all(),
]);
}
}
所以我想顯示每個項目的client_id中的客戶端名稱,這是我的索引
<tbody class="">
@foreach ($projects as $project)
<tr>
<td>{{ $project->proj_id }}</td>
<td>{{ $project->proj_title }}</td>
<td>{{ $project->proj_desc }}</td>
<td>{{ $project->client->client_name }}</td>
<td>{{ $project->created_by }}</td>
<td>{{ $project->created_at }}</td>
@if (Auth::user()->role == 'admin')
<td>
客戶模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Client extends Model
{
protected $primaryKey = 'client_id';
protected $fillable = ['client_name','client_id'];
public function projects () {
return $this->hasMany('App\Project');
}
}
項目模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Project extends Model
{
protected $primaryKey = 'proj_id';
protected $fillable = [
'proj_title',
'proj_desc',
'client_id',
'created_by'
];
public function clients (){
return $this->hasOne('App\Client');
}
}
那么,如何從索引中檢索數據? 我嘗試過像文檔中那樣,但是總是出現錯誤。
提前致謝。
由於客戶可以擁有一個/多個項目,因此您應該在項目模型上定義關系的逆關系。 這將變成:一個項目屬於一個客戶。
在代碼中: 項目模型
public function client()
{
return $this->belongsTo('App\Client');
}
您還會注意到這種反向關系,因為您將外鍵( client_id )存儲在projects表中。 如果你使用has one
,Laravel將尋求在相關模型表(外列clients
在你的例子)。
注意:在您的視圖中,您正在調用client->client_name
,但是您將關系定義為clients
(復數)。 我將其重命名為client
(單數),因為它可以更好地描述它
在您的項目控制器中:
return view('projects.index', [
'projects' => Project::with('clients')->get(),
]);
您認為:
<td>{{$project->clients->client_name}}</td>
由於您是hasOne關系,所以在Project模型上將project-> client關系命名為客戶。
此外,我將定義作為該項目- >客戶端的關系BelongsTo
,而不是一個HasOne
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.