Skip to content

Pre-release 4.2.96 → master — task 2.5 (Database: pluck/lists/SoftDeletes) - #64

Open
agissept wants to merge 3 commits into
masterfrom
pre-release/4.2.96
Open

agissept wants to merge 3 commits into
masterfrom
pre-release/4.2.96

Conversation

@agissept

@agissept agissept commented Sep 17, 2026

Copy link
Copy Markdown
Member

Release PR untuk l42x 4.2.96 (tag 4.2.96 = tip branch ini). Fork-half dari deploy task 2.5, sepola #59 (pre-release → master). Menggantikan task-PR #61/#62/#63 (di-close).

Isi — task 2.5 Database ONLY (rebased & bersih)

  • 2.5aBuilder::value() additive (scalar getter).
  • 2.5eSoftDeletingTraitSoftDeletes, ScopeInterfaceScope, Model→L13 contracts (Arrayable/Jsonable).
  • 2.5dBuilder::pluck() jadi list-returning, Builder::lists() dihapus (caller internal → pluck()).

Diff: +106/−106, 13 file, murni src/Illuminate/Database/*. Routing engine (2.8) udah di master (rebase drop otomatis); pagination getter bridge (2.15) di-drop (app pakai getter L13, nggak butuh).

Konsumsi app

App pin "laravel/framework": "4.2.96" di #5830 (dicoding). Deploy = matched pair: PR ini → master + #5830 → app master, 1× canary.

Verifikasi

  • Fork suite 1647 / 3659 hijau.
  • App full unit suite 8352 / 67976 hijau (consume 4.2.96 rebased & 2.5-only).

⚠️ Jangan merge sampai window deploy (matched pair dgn #5830).

🤖 Generated with Claude Code

agissept and others added 3 commits September 17, 2026 20:16
…ditive)

First, non-breaking step of the pluck/lists pipeline. value($column) is a
copy of today's scalar pluck() body on both Query\Builder and Eloquent\Builder
— value() === pluck() for scalars right now. Purely additive: no call-site
changes behavior, pluck() untouched. Unblocks app 2.5b (->pluck()->->value())
WITHOUT flipping pluck semantics, so the repos never flip in the same instant.

Tests: value() returns the scalar and equals pluck() (Query + Eloquent).
Database suite 516 green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ace→Scope, Model to L13 contracts (task 2.5e)

Safe, type-caught slice of task 2.5 (Database). No alias — old FQCNs fatal
so the app is forced to conform (task 2.5f, lockstep).

- SoftDeletingTrait → SoftDeletes; boot hook bootSoftDeletingTrait() →
  bootSoftDeletes() (MUST match the new trait basename or Eloquent silently
  stops registering SoftDeletingScope → soft-deleted rows leak). Proven by
  DatabaseEloquentBuilderTest:486 (fails when the hook name is wrong).
- ScopeInterface → Scope; SoftDeletingScope + Model typehints updated.
- Model implements Illuminate\Contracts\Support\{Arrayable,Jsonable} (were
  Illuminate\Support\Contracts\{ArrayableInterface,JsonableInterface}); the 2
  Model instanceof checks migrated to Arrayable. BC-safe: old contracts extend
  the new ones, so instanceof Arrayable is strictly wider.

Does NOT touch lists()/pluck() — that dangerous semantic swap is the separate
2.5a–d pipeline. Fork suites green (Database 513, Support/Http/View 199).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…uilder::lists() (task 2.5d)

Completes the fork side of the pluck/lists pipeline. Query\Builder and
Eloquent\Builder pluck($column, $key = null) now return the list (old lists()
body, an array); the scalar path lives in value() (added in 2.5a). lists() is
removed from both builders. Internal callers rewired: Query\Builder::implode(),
DatabaseMigrationRepository::getRan(), BelongsToMany (getRelatedIds/getCurrentIds)
now use pluck(). Support\Collection::lists() kept (Collection callers convert in
app 2.5c). Fork suite green: 1647 tests / 3659 assertions.

Stacked on migration/2.5-fork-stack (= 4.2.95 + 2.5a value() + 2.5e SoftDeletes);
this branch is what the app pins for task 2.5c.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@agissept agissept changed the title Pre-release 4.2.96 → master — task 2.5 Database (+ routing/pagination tail) Pre-release 4.2.96 → master — task 2.5 (Database: pluck/lists/SoftDeletes) Sep 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant