Error al mostrar
Symfony\Component\HttpFoundation\Response::setContent(): El argumento n.º 1 ($contenido) debe ser del tipo ?string, Illuminate\Database\Eloquent\Relations\HasOne dado, llamado en G:\Laravel\practice-1\vendor \laravel\framework\src\Illuminate\Http\Response.php en la línea 72
Modelo de usuario
<?php namespace App\Models; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable; /** * The attributes that are mass assignable. * * @var array<int, string> */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for serialization. * * @var array<int, string> */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast. * * @var array<string, string> */ protected $casts = [ 'email_verified_at' => 'datetime', ]; public function book() { # code... return $this->hasOne(Book::class); } }Migración de libros
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateBooksTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('books', function (Blueprint $table) { $table->id(); $table->integer('user_id')->unsigned(); $table->string('title'); $table->string('abut'); $table->float('amount', 8, 2); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('books'); } } Route::get('/user/{id}/book', function ($id) { return User::find($id)->book(); });No tengo idea de por qué estoy viendo este error. También miré la documentación pero no se encontró ayuda.
Tus definiciones son buenas. Pero esta declaración:
return User::find($id)->book(); devuelve un objeto Illuminate\Database\Eloquent\Relations\HasOne .
Ese no es un contenido válido para una respuesta. Intenta cambiarlo a:
return User::find($id)->book;