我有两个型号:
Wilaya
和Commune
,基本上就像Country
和Capital
。两个模型之间存在一对多关系。
Wilaya模型
class Wilaya extends Model
{
protected $fillable = ['nom'];
use HasFactory;
public function communes()
{
return $this->hasMany(Commune::class);
}
}
公社模式
class Commune extends Model
{
protected $fillable = ['nom', 'wilaya_id'];
use HasFactory;
public function wilaya()
{
return $this->belongsTo(Wilaya::class);
}
}
我想在订单视图页面上显示
WilayaName
和 CommuneName
而不是它们的 ID。以下是我在控制器中检索它们并在视图中显示它们的方法。
public function show(Order $order, $id)
{
$data = Order::find($id);
//$data = Order::with('wilaya')->find($id);
$arr = unserialize($data->products);
//dd($data);
return view('order.show', compact('data', 'arr'));
}
查看
<div class="mb-3">
<label for="exampleInputEmail1" class="form-label">Wilaya: </label>
<input type="email" class="form-control" id="exampleInputEmail1"
aria-describedby="emailHelp" name="email" placeholder="/"
value="{{ $data->wilaya }}" disabled>
</div>
<div class="mb-3">
<label for="exampleInputEmail1" class="form-label">Ville: </label>
<input type="email" class="form-control" id="exampleInputEmail1"
aria-describedby="emailHelp" name="email" placeholder="/"
value="{{ $data->commune }}" disabled>
</div>
这只会显示他们的
ID
而不是 Name
。
我尝试像这样获取名称:
value="{{ $data->commune->name }}"
和value="{{ $data->wilaya }}"
和
我收到一条错误消息:
尝试读取 int 上的属性“name”
我也尝试像这样急切地加载控制器上的关系
$data = Order::with('wilaya.communes')->find($id);
它返回一个错误,说
调用模型 [App\Models\Order] 上未定义的关系 [wilaya]。** 知道
和Order Model
和Wilaya model
之间没有关系Commune model
请随时告诉我我做错了什么或我可以做得更好。我对此很陌生。
在你的帮助下我已经弄清楚并使用了一对多关系
订单.php
public function wilaya()
{
return $this->belongsTo(Wilaya::class, 'wilaya_id');
}
public function commune()
{
return $this->belongsTo(Commune::class, 'commune_id');
}
和内部 **Wilaya 模型 **
public function orders()
{
return $this->hasMany(Order::class);
}
和公社模式
public function orders()
{
return $this->hasMany(Order::class);
}
然后我在视图上这样调用它:
value="{{ $data->wilaya->nom}}"
value="{{ $data->commune->nom }}"
就像魅力一样