ich diese globale Reichweite haben:Eloquent globale Reichweite mit Delete-Anfragen stören
class EarmarkScope implements Scope
{
public function apply(Builder $builder, Model $model)
{
$builder->leftJoin('users', 'users.id', '=', 'earmarks.by_id')
->leftJoin('locations', 'locations.id', '=', 'earmarks.location_id')
->select('earmarks.*', 'users.name AS by', 'locations.location')
->orderBy('date', 'ASC');
}
}
Aber wenn zu nennen versuchen: Earmark::destroy($id);
ich diesen Fehler:
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous (SQL: select
earmarks
.*,users
.name
asby
,locations
.location
fromearmarks
left joinusers
onusers
.id
=earmarks
.by_id
left joinlocations
onlocations
.id
=earmarks
.location_id
whereid
in (72) order bydate
asc)
erkenne ich die globale Reichweite dieses verursacht , aber diese Reichweite spart mir so viel Zeit für SELECT-Abfragen. Wie kann ich vermeiden, dass es ein Problem mit destroy()
und anderen nützlichen Laravel-Funktionen wie find()
verursacht?
was verwenden passieren, wenn Sie 'Earmark :: withoutGlobalScope (EarmarkScope :: class) -> destroy ($ id)' ? –
Ich bekomme 'Call to undefined Methode Illuminate \ Database \ Query \ Builder :: destroy()' – daninthemix
wenn es Ihnen nichts ausmacht, welche Laravel Version haben Sie benutzt? Wie auch immer, [lies einfach den Code] (https://github.com/laravel/framework/blob/5.3/src/Illuminate/Database/Eloquent/Model.php#L1065) Es hat keine Scopes zum Zerstören von Dingen angewendet. –