Я работаю с Laravel и Nova . Так что в основном в Laravel у меня есть такая модель:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
}
Затем Nova помогает мне создать красивый веб-интерфейс CMS на https://example.com/admin/resouces/flights
, который перечисляет все мои рейсы и https://example.com/admin/resouces/flights/<id>
, чтобы позволить мне CRUD против конкретной записи. Все, что мне нужно сделать, чтобы это произошло, - создать файл app/Nova/Flight.php
с содержимым:
<?php
namespace App\Nova;
//... import other classes like Text Fields, WYSIWYG editors etc.. etc.., that are the nice CMS UI fields to modify each column in my flights table
class Flight extends Resource
{
public static $model = 'App\Flight';
// ... list of fields I want to modify ...
}
Это прекрасно работает, и все, кроме того, что сейчас я хочу сделать два разных URL, например:
* `https://example.com/admin/resouces/flights-cancelled` - this should only list the equivalent of `SELECT * FROM flights WHERE status = 'cancelled'`
* `https://example.com/admin/resouces/flights-active` - this should only list the equivalent of `SELECT * FROM flights WHERE status = 'active'`
Все будет немного сложнее по мере развития моего проекта, поэтому мне было интересно, есть ли способ определить новую модель с именем App\FlightCancelled
, которая точно такая же, как App\Flight
, за исключением всех запросов к базе данных всегда будет включать WHERE status='cancelled'
условие. Таким образом, я могу назначить App\FlightCancelled
в качестве модели для моего ресурса Nova.
Интересно, как это сделать? Или есть ли лучший способ достичь моей цели?