Including Related Models with include

The include parameter allows you to fetch related records alongside the main model. This is useful for eager-loading associations such as one-to-one, one-to-many, or many-to-many relations.

  • Accepts an associative array where keys are relation names and values are booleans (true) or nested select arrays.
  • Can include nested relations for deep population of associated records.
  • Cannot be used in combination with select.
  • Supports special aggregations like _count for relation counts.

Example Usage: Basic Include

use Lib\Prisma\Classes\Prisma;

$prisma = Prisma::getInstance();
$users = $prisma->user->findMany([
    'include' => [
        'profile' => true
    ]
]);

echo "<pre>";
print_r($users);
echo "</pre>";

Example Usage: Nested Include with Select

$users = $prisma->user->findMany([
    'include' => [
        'profile' => [
            'select' => [
                'bio' => true
            ]
        ]
    ]
]);

Example Usage: Relation Count with _count

$users = $prisma->user->findMany([
    'include' => [
        '_count' => [
            'select' => [
                'posts' => true
            ]
        ]
    ]
]);

Best Practices

  • Use include when you need related model data immediately—this avoids extra queries.
  • Use nested select inside include to control which fields from related models are returned.
  • Avoid combining select and include at the top level—they are mutually exclusive.
  • Use _count to retrieve relation sizes without loading all related records.