{"adoption": {"forks": 143, "observed_at": "2026-08-28T04:03:59.541834+00:00", "stars": 1207}, "canonical_url": "https://ross.abutalabs.com/products/compoships", "card": {"archived": false, "artifact_type": "library", "description": "Multi-columns relationships for Laravel's Eloquent ORM", "domain": ["web-development", "databases", "backend"], "enriched": true, "function": ["orm", "database"], "health_score": 99, "homepage": null, "language": "PHP", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["topclaudy/compoships"], "name": "topclaudy/compoships", "platform": ["php"], "pushed_at": "2026-08-19T15:47:55+00:00", "repo": "topclaudy/compoships", "stars": 1207, "tags": ["eloquent", "composite-keys", "laravel-package", "relationships", "laravel"], "topics": ["laravel", "composite-keys", "relationships", "eloquent", "multi-columns", "multi-keys"], "urls": [], "use_cases": ["define eloquent relationships on composite keys", "eager load relationships matching multiple columns", "work with legacy database schemas in laravel", "hasMany relationship with multiple foreign keys", "belongsTo relationship with two foreign keys"], "what_it_is": "Compoships is a PHP library that extends Laravel's Eloquent ORM to support relationships based on two or more columns (composite keys). It works via a base model class or trait, enabling eager loading of relationships that match multiple columns.", "when_to_avoid": ["your schema uses single-column keys, which Eloquent handles natively", "you don't use Laravel or Eloquent", "you need full composite primary key support for CRUD operations rather than just relationships"], "when_to_choose": ["you use Laravel Eloquent and need relationships matching multiple columns", "you work with third-party or pre-existing schemas with composite keys", "where clauses fail during eager loading because of null attributes"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/compoships", "repo": "topclaudy/compoships", "role": "main", "score": 94}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.541834+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:19:15.062761+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c73ce9ebd98e3dd97b7fdfb902ec68ded46ddc60d6c8fd49b4a5a61c28945c7", "fetched_at": "2026-08-28T04:03:59.541834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topclaudy/compoships"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.541834+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:19:15.062761+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c73ce9ebd98e3dd97b7fdfb902ec68ded46ddc60d6c8fd49b4a5a61c28945c7", "fetched_at": "2026-08-28T04:03:59.541834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topclaudy/compoships"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:19:15.062761+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c73ce9ebd98e3dd97b7fdfb902ec68ded46ddc60d6c8fd49b4a5a61c28945c7", "fetched_at": "2026-08-28T04:03:59.541834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topclaudy/compoships"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.541834+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.541834+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.541834+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:19:15.062761+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c73ce9ebd98e3dd97b7fdfb902ec68ded46ddc60d6c8fd49b4a5a61c28945c7", "fetched_at": "2026-08-28T04:03:59.541834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topclaudy/compoships"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.541834+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.541834+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:19:15.062761+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c73ce9ebd98e3dd97b7fdfb902ec68ded46ddc60d6c8fd49b4a5a61c28945c7", "fetched_at": "2026-08-28T04:03:59.541834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topclaudy/compoships"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.541834+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.541834+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.541834+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:19:15.062761+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c73ce9ebd98e3dd97b7fdfb902ec68ded46ddc60d6c8fd49b4a5a61c28945c7", "fetched_at": "2026-08-28T04:03:59.541834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topclaudy/compoships"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.541834+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.541834+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:19:15.062761+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c73ce9ebd98e3dd97b7fdfb902ec68ded46ddc60d6c8fd49b4a5a61c28945c7", "fetched_at": "2026-08-28T04:03:59.541834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topclaudy/compoships"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:19:15.062761+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c73ce9ebd98e3dd97b7fdfb902ec68ded46ddc60d6c8fd49b4a5a61c28945c7", "fetched_at": "2026-08-28T04:03:59.541834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topclaudy/compoships"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:19:15.062761+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c73ce9ebd98e3dd97b7fdfb902ec68ded46ddc60d6c8fd49b4a5a61c28945c7", "fetched_at": "2026-08-28T04:03:59.541834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topclaudy/compoships"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:19:15.062761+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c73ce9ebd98e3dd97b7fdfb902ec68ded46ddc60d6c8fd49b4a5a61c28945c7", "fetched_at": "2026-08-28T04:03:59.541834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topclaudy/compoships"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 86}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3073, "days_push": 14, "days_rel": 14, "gap_med": 35, "n_releases_24m": 10}, "score": 94, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}