我有這個查詢,它從一個表中回傳資料:
$existData =Booking::where(function ($query)use($start, $end){
$query->whereBetween('start', [
$start, $end
])->orwhereBetween('end', [
$start, $end]);
})->where('status','confirmed')->get();
這會回傳資料,但是當我向它添加關系時
$existData =Booking::where(function ($query)use($start, $end){
$query->whereBetween('start', [
$start, $end
])->orwhereBetween('end', [
$start, $end]);
})->where('status','confirmed')->with(['bookingDetails'=> function ($q) use($data){
$q->where('user_type',$data->type);
}])->get();
它給出了錯誤:
此集合實體上不存在屬性 [user_type]。
但我在預訂模型中創建了關系
public function bookingDetails()
{
return $this->hasMany('App\Models\BookingRoomDetails', 'o_id', 'id');
}
BookingDetailModel :
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class BookingRoomDetails extends Model
{
use HasFactory;
}
我希望整個查詢僅在外部查詢和內部查詢回傳 true 時才回傳資料,例如。 $q->where('user_type',$utype->type);并且存在的時間范圍已經可以正常作業。
解決此問題的任何解決方案
uj5u.com熱心網友回復:
更改查詢代碼,如:
use Illuminate\Database\Eloquent\Builder;
$existData = Booking::with(['bookingDetails'=> function ($q) use ($data) {
$q->where('user_type',$data->type);
}])->where(function (Builder $query) use ($start, $end) {
return $query->whereBetween('start', [ $start, $end ])
->orwhereBetween('end', [ $start, $end ]);
})->where('status','confirmed')
->get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/435703.html
標籤:拉拉维尔 laravel-5 雄辩 laravel-4
上一篇:laravel如何處理第三方APIHttp::post錯誤
下一篇:Laravel5.2中的獨特作業
