0

予約テーブルと特定のロケーションを介して、利用可能な部屋を見つけようとしています。

$not_available = Booking::where('dateFrom', '>=', $arrival)
->where('dateTo', '<=',  $depart)
->get(array('gardenId', 'dateFrom', 'dateTo'));
$gardens = Garden::where('province',$location)->get();

    foreach ($not_available as $not) 
    {
        $gardenId = $not->gardenId;
        $gardens = Garden::where('id','<>',$gardenId)->where('province',$location)->get();
    }

私はいつも間違った結果を出しています。私を助けてくれる人はいますか?

4

1 に答える 1

0

これはかなり近いはずです。熱心な読み込みであり、パフォーマンスが向上します。

// If you don't have your relationships setup in your model yet.  
class Booking extends Eloquent {

    public function gardens()
    {
        return $this->hasMany('Garden', 'gardenId');
    }

}

class Garden extends Eloquent {

    public $primaryKey = 'gardenId';

    public function booking()
    {
        return $this->belongsTo('Booking');
    }
}

// Eager load
$bookings = Booking::where('dateFrom', '>=', $arrival)
    ->where('dateTo', '<=', $depart)
    ->with(array('gardens' => function($query)
    {
        $query->where('province', '=', $location)
    }))
    ->get();

foreach($bookings as $booking)
{
    foreach($booking->gardens as $garden)
    {
        echo $booking->name;
        echo $garden->name;
        echo $garden->location;
    }
}
于 2013-11-08T14:08:15.827 に答える