php - 在 Laravel 中显示从一个到 hasMany 的关系
问题描述
我想在视图中显示我的位置名称,但我不明白我做错了什么。
位置模型-
public function orderz()
{
return $this->hasMany('App\Models\Order', 'location', 'location_id');
}
}
订单模式
public function location()
{
return $this->belongsTo('App\Models\Order');
}
LocationsController.php -
public function show($id)
{
$locations = Location::find($id)->orderz()->whereDate('created_at', '=', Carbon::today()->toDateString());
$orders = Order::all();
$wallets = Wallet::all();
//$orders = DB::table('orders')->where('location', '=', 'New York')->get();
return view('location')
->with('locations', $locations)
->with('wallets', $wallets)
->with('orders', $orders);
}
我这样称呼它:
@foreach ($locations as $location)
@foreach($location->orders as $order)
{{$order->location_id}}
@endforeach
@endforeach
当我从我的代码日期过滤器中删除它时它可以工作,但我正在显示所有日子的订单。
$locations = Location::find($id)->orders()->whereDate('created_at', '=', Carbon::today()->toDateString());
看起来像这样:
$locations = Location::find($id)->orders;
解决方案
确保在您的一对多关系中,第二个参数必须是您的 Order 模型中的外键。Eloquent 将自动确定 Order 表上正确的外键列。现在你们的关系一定是。
public function orderz()
{
return $this->hasMany('App\Models\Order', 'foreign_key_in_order_model', 'primary_key_in_location_model');
}
您的最终代码应如下所示。
public function orderz()
{
return $this->hasMany('App\Models\Order', 'location_id', 'location');
}
推荐阅读
- python - 不可用的函数参数
- vue.js - 为什么我在 nuxt 中的“仅限客户端”组件抱怨“未定义窗口”?
- javascript - 多个条件下的 Google Apps 脚本中的 setnumberformat()(例如 xb) 基于引导令牌
- certificate - 尝试在 CACERTS 中更新 PFX 证书时出错
- c# - 在发送电子邮件时,MailKit 在 C# 中引发错误
- javascript - 如何在一页上运行两次 javascript/Canvas 脚本?
- sql - 如何将 postgres 12 生成的 sql 文件恢复到 postgres 9.6 数据库中
- python - python代码仅从gcs存储桶中读取部分csv文件
- session - 如何在 MVC .NET Core 2.2 的模型中使用 Session
- angular - 带有nestjs的Angular-universal:错误:找不到模块'./drivers/node-mongodb-native/connection'