Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 口才过人的论点没有被口才过人的人认可_Php_Laravel_Eloquent - Fatal编程技术网

Php 口才过人的论点没有被口才过人的人认可

Php 口才过人的论点没有被口才过人的人认可,php,laravel,eloquent,Php,Laravel,Eloquent,我正在修复一个项目,我在一个模型中创建了一个范围来查询一个关系,该关系也执行一个闭包: 这是范围,它是一家酒店: public function scopeIsHotelAvailable($query, $start_date, $end_date){ return $query->whereHas('isAvailableInRanges', function($q) use ($start_date, $end_date) {

我正在修复一个项目,我在一个模型中创建了一个范围来查询一个关系,该关系也执行一个闭包:

这是范围,它是一家酒店:

public function scopeIsHotelAvailable($query, $start_date, $end_date){

        return $query->whereHas('isAvailableInRanges', function($q) use ($start_date, $end_date) {
                    $q->isAvailableInRanges($start_date, $end_date);
            });
    }
当我尝试运行此命令时,会出现以下错误:

$hotel->ishotelavailable($start, $end);

TypeError: Too few arguments to function Modules/Hotel/Models/Hotel::isAvailableInRanges(), 0 passed in /home/ffuentes/pk2/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php on line 475 and exactly 2 expected
我以前见过这一点,但我不知道如何使雄辩的认识到这些论点

编辑:

这是从Close调用的方法,Close是model Hotel的一部分

public function isAvailableInRanges($start_date,$end_date){

        $days = max(1,floor((strtotime($end_date) - strtotime($start_date)) / DAY_IN_SECONDS));

        if($this->default_state)
        {
            $notAvailableDates = $this->hotelDateClass::query()->where([
                ['start_date','>=',$start_date],
                ['end_date','<=',$end_date],
                ['active','0']
            ])->count('id');
            if($notAvailableDates) return false;

        }else{
            $availableDates = $this->hotelDateClass::query()->where([
                ['start_date','>=',$start_date],
                ['end_date','<=',$end_date],
                ['active','=',1]
            ])->count('id');
            if($availableDates <= $days) return false;
        }

        // Check Order
        $bookingInRanges = $this->bookingClass::getAcceptedBookingQuery($this->id,$this->type)->where([
            ['end_date','>=',$start_date],
            ['start_date','<=',$end_date],
        ])->count('id');

        if($bookingInRanges){
            return false;
        }

        return true;
    }
公共函数在范围($start\u date,$end\u date)中可用{
$days=最大值(1,楼层((strotime($end_date)-strotime($start_date))/DAY(以秒为单位));
如果($this->default_state)
{
$notAvailableDates=$this->hotelDateClass::query()->其中([
['start_date','>=',$start_date],
['end_date','=',$start_date],
['end_date','=',$start_date],
[“开始日期”,“问题1:
如果使用的是范围方法而不是关系,请尝试在中使用关系方法,如:

->whereHas('yourRelationshipMethod',函数($q){…});
问题2:
isAvailableInRanges
位于酒店模型中,因此您可以按酒店而不是关系模型调用它

问题3: 但是
isAvailableInRanges
是一个实例方法,因此您不能仅仅通过雄辩的生成器调用它,您需要获取实例并调用此方法:

Hotel::first()->isAvailableInRanges($start\u date,$end\u date);

dd($start,$end)
我删除了它。我正在调试,但这不是错误。问题在于关系。你使用了错误的关系…好吧,但关系有什么问题?与酒店的关系是什么?我如何重写查询或方法,以便检索过滤后的查询?我不想逐个检索它们。我能得到()吗?而且分页丢失了!我不知道你和另一个类的关系,很难进行查询。