我有三个模型通过简单的一对多关系连接:一个客户端(具有多个(点,单点(有多个(order_powers。order_powers表包含value列和date_from列。date_from是有序幂的值有效的日期。
客户端模式:
public function points() {
return $this->hasMany(Point::class);
}
public function order_powers() {
return $this->hasManyThrough(OrderPower::class, Point::class);
}
点内模型:
public function clients() {
return $this->belongsTo(Client::class);
}
public function order_powers() {
return $this->hasMany(OrderPower::class);
}
In-OrderPower模型:
public function order_powers() {
return $this->belongsTo(Point::class);
}
我想在单个页面上显示:
- 单个客户端的数据
- 属于该客户的点的数据
- 为客户的每个点提供有序的电源。只有Object的一个值具有最近的";日期自";应显示
我用Inertia和Vue渲染的ClientController看起来是这样的,实际上点1和2已经完成,点3对我来说是个问题。目前,控制器显示给定点的所有有序幂。我不知道如何根据date_from列只显示"value"列的一个值?
return Inertia::render('Clientshow', [
'client' => [
'id' => $client->id,
'name' => $client->name,
'street' => $client->street,
'city' => $client->city,
'points' => $client->points()->with(['order_powers'=>function ($q)
{
$q->orderBy('date_from','desc');
}
])->get(),
],
]);
示例:
- 一个客户有两点
- 每个点有两个order_power
- Vue显示每个点的所有两个值,我只想要一个(first((,take(1(只显示所有点的一个order_power值
我的Vue组件:
>client:Reactive
id:33
name:"ClientName"
street:"StreetName"
city:"CityName"
>points:Array[2]
>0:Object
client_id:33
created_at:"2022-10-13T15:31:37.000000Z"
id:65
>order_powers:Array[2] <- I want display only one value of column "value" of one Object
>0:Object
>1:Object
pp_type:"xxxx"
updated_at:"2022-10-13T15:31:37.000000Z"
>1:Object
我不确定是否理解您的问题,但我认为如果您只想在模型点中选择列值的值,您可以使用:
'points' => $client->points()->with(['order_powers:id,value'=>function ($q) ...