在 Laravel 订单页面上显示国家/地区和首都名称而不是 ID

问题描述 投票:0回答:1

我有两个型号:

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

之间没有关系

请随时告诉我我做错了什么或我可以做得更好。我对此很陌生。

laravel foreign-keys relationship
1个回答
0
投票

在你的帮助下我已经弄清楚并使用了一对多关系

订单.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 }}"

就像魅力一样

© www.soinside.com 2019 - 2024. All rights reserved.