SELECT users.id, users.email, profile.first_name, profile.last_name
FROM users
JOIN profiles on user.id = profiles.id
WHERE users.deleted_at IS NOT NULL
ORDER BY users.last_logged_at DESC
LIMIT 10deleted_at z nulla na timestamp z teraz.
WHERE deleted_at IS NOT NULL, a DELETY zamienić na UPDATY ustawiające deleted_at na NOW()
employees na dwie, albo dorobić flagę is_acitve. W obu przypadkach musimy zmienić wszystkie zapytania, żeby obecnie działający kod nie przestał poprawnie fukcjonować.
products do prices, która będzie odwoływała się do currencies. "Jedyne", co nam zostaje to znaleźć wszystkie zapytania z ceną i dodać do nich JOINY do walut na podstawie... danych z profilu?
$t = Carbon::now()->subYears(18);
User::query()
->activated()
->with("profile")
->where("profile.birthdate", "<=", $t),
->get();
SELECT *
FROM users
JOIN profiles ON user.id = profile.id
LEFT JOIN agreements ON users.id = agreements.user_id
AND agreements.consent_type = 'data_processing'
WHERE users.activated = 1
AND profiles.birthdate <= "2024-04-24"
AND banned_at IS NOT NULL
AND deleted_at IS NOT NULL
AND agreements.id IS NOT NULL
ORDER BY users.logged_at DESC
LIMIT 50
User, Attachment czy Company.
/**
* @property string $id
* @property string $name
* @property int $price
* @property Collection<Photo> $photos
* @property Carbon $created_at
* @property Carbon $updated_at
*/
class Product extends Model
{
use HasUuids;
public function photos(): HasMany
{
return $this->hasMany(Photo::class);
}
}
$product = Product::query()->find($id);
$product->price *= 1.2;
$product->save();
Model pochodzącej z biblioteki ORM-u.
User::query()->first() zwróci nam pierwszego użytkownia wedle założeń opisanych w klasie User i będzie to obiekt klasy... User. Wówczas na obiekcie możemy wywoływać dowolne akcje obiektowo: $user->delete() czy $user->profile->birthdate = "1970-01-01"; $user->profile->save()
#[Entity]
class Product
{
public string $id
public string $name
public int $price
#[HasMany(Photo::class)]
public Collection $photos
public Carbon $created_at
public Carbon $updated_at
}
$manager = new Manager();
$product = (new ProductRepository()).getById($id);
$product->price *= 1.2;
$manager->persist($product);
$manager->flush();