Laravel 11 Eloquent ORM

Tha Laravel na fhrèam MVC làn feart agus a tha a’ sìor atharrachadh

Tha an Eloquent ORM, ann an Laravel, a’ toirt seachad gnìomhachadh sìmplidh agus èifeachdach de ActiveRecord airson a bhith ag obair leis an stòr-dàta agad.

Anns an artaigil seo chì sinn cuid de fheartan nach eil aithnichte agus glè fheumail.

3 minuti

Chì sinn san artaigil seo mar as urrainn do Laravel 11 Eloquent ORM ar cuideachadh le fuasgladh fhaighinn air duilgheadasan sònraichte.

Colonna deleted_at airson sguabadh bog

Bidh Laravel a’ làimhseachadh sguabadh às bog tron ​​​​cholbh deleted_at. Tha seo a’ ciallachadh gu bheil seilbh againn ri fhaighinn a leigeas leinn dligheachd an sguabaidh às bog a shuidheachadh. Faodaidh sinn an uairsin an suidheachadh atharrachadh le bhith a’ mìneachadh an togalaich gu soilleir DELETED_AT taobh a-staigh a 'chlas a tha a' mìneachadh a 'mhodail:

class House extends Model
{
    use SoftDeletes;

     * The name of the "deleted at" column.
     *
     * @var string
     */
    const DELETED_AT = 'is_deleted';
}

No le bhith a’ mìneachadh dòigh a tha an-còmhnaidh taobh a-staigh a’ chlas anns a bheil sinn airson an sguabadh às bog a riaghladh:

class House extends Model
{
    use SoftDeletes;

    public function getDeletedAtColumn()
    {
        return 'is_deleted';
    }
}

Ciamar a stiùireadh soft deletes

Gus rianachd a soft deletes Tha cuid de dhòighean againn rim faighinn, nam measg:

  • withTrashed(): gus clàran a chaidh a dhubhadh às a thoirt a-steach gu sealach, gu socair;
  • onlyTrashed(): Na cuir a-steach ach clàran a chaidh a dhubhadh às gu sealach, airson ùine;
  • restore(): cuir air ais clàran a chaidh a dhubhadh às;

Tha am buidheann de dhòighean seo air a chleachdadh gus gnìomhachd Soft Delete ann an Laravel a làimhseachadh.
Sgrìobh mi artaigil gu math toinnte air a h-uile càil Soft Delete

$houses = House::withTrashed()->get();
$trashedHouses = House::onlyTrashed()->get();
House::withTrashed()->where('id', 1)->restore();

Clone a Model

Faodaidh tu clòn a dhèanamh air teamplaid le bhith a’ cleachdadh replicate(). Bidh an toradh mar leth-bhreac den mhodail ann an suidheachadh ùr nach eil idir ann. Tha an eisimpleir a leanas a 'ruith a' mhodh replicate() gu modail $house, a 'cruthachadh modail ùr $newHouse a ghineas le sàbhaladh clàr ùr co-ionann ris an fhear a chaidh a thoirt a-mach a’ cleachdadh find().

$house = App\House::find(1);
$newHouse = $house->replicate();
$newHouse->save();

Sàbhail modailean agus dàimhean

Faodaidh tu modail a shàbhaladh agus na dàimhean co-fhreagarrach aige a 'cleachdadh an dòigh push(). Anns an ath eisimpleir bidh sinn a’ cruthachadh seòrsa ùr de mhodail House, le ainm Villa Cleopatra agus seòladh na làraich togail Mulberry Street: a’ toirt a-steach modh push() air an Model House rachamaid a shàbhaladh an dà chuid Model House che il Model WorkSite.

class House extends Model
{
    public function worksite()
    {
        return $this->hasOne('App\WorkSite');
    }
}
$house = House::first();
$house->name = "Villa Cleopatra";
$house->worksite->address = 'Mulberry Street';
$house->push(); // This will update both house and worksite record in DB

Mar a gheibh thu na feartan tùsail

Ma tha an dèidh deasachadh clàr Eloquent, ma tha thu airson na luachan tùsail ath-leughadh: faodaidh tu sin a dhèanamh. Gus seo a dhèanamh faodaidh tu an gnìomh a ghairm getOriginal()

$house = App\House::first(); 
$house->name; //Villa Cleopatra
$house->name = "Villa Giulio Cesare"; // Villa Giulio Cesare
$house->getOriginal('nome') ; //Villa Cleopatra
$house->getOriginal() ; //Original $house record

Mar a nì thu sgrùdadh a bheil am modail air atharrachadh

Gus faighinn a-mach a bheil modail no feart sònraichte air atharrachadh, faodaidh tu an gnìomh a chleachdadh isDirty()

$house = App\House::first();
$house->isDirty();          //false
$house->name = "Villa Giulio Cesare";
$house->isDirty();          //true

Faodaidh tu cuideachd dearbhadh a bheil feart sònraichte air atharrachadh.

$house->isDirty('name');    //true
$house->isDirty('address');     //false

Mar a dh'atharraicheas na feartan

Ma lorgas sinn gu bheil modail air atharrachadh, agus gu bheil sinn airson faighinn a-mach gu mionaideach dè a chaidh atharrachadh, is urrainn dhuinn a dhèanamh leis a’ ghnìomh getChanges(). Bidh an gnìomh a’ tilleadh sreath leis an liosta de bhuadhan a tha an lùib an atharrachaidh.

$user->getChanges()      // [  "name" => "Peter",  ]

Autore