Как ответили другие, ваше требование должно быть выполнено так, как вы описали в своем вопросе.
Я просто добавляю более чистую технику для удаления ПЕРВОЙ строки таблицы.Создайте модель (сделанную с использованием Eloquent), затем добавьте метод области действия, который вернет первую строку таблицы, а затем вам просто нужно вызвать delete()
в построителе запросов.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class FooBarModel extends Model
{
protected $table = 'foo_bar';
/**
* Scope a query to retrieve first row.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeFirstRow($query)
{
return $query->orderBy('id')->first(); // Assuming id is the name of primary key column in the table
}
}
Тогда вы можетеудалите первую строку как:
FooBarModel::firstRow()->delete(); // This will delete the very first available row every time it is called
Однако обработка исключений всегда является хорошей практикой.Здесь, если в таблице нет ни одной строки, вызов вышеуказанного оператора вызовет исключение, так как объект построителя запросов вернет null
.Поэтому лучше сначала проверить, не является ли результат нулевым, а затем вызывать только метод delete()
.
$firstRow = FooBarModel::firstRow();
if (!is_null($firstRow)) {
$firstRow->delete();
}
Аналогично, вы также можете создавать другие области действия для удаления последней строки, последней до последней строки и т. Д.
Если вы хотите пойти по более чистому пути, чем этот, то вы можете просто написать метод в самом Model
и написать весь код для удаления там.
/**
* @return bool
*/
public static function deleteFirstRow()
{
$firstRow = self::firstRow();
if (!is_null($firstRow)) {
$firstRow->delete();
return true;
}
return false;
}
Затем вызовитеdeleteFirstRow()
чтобы удалить первую строку.
FooBarModel::deleteFirstRow();
Надеюсь, это поможет.