php - 尝试在 null 上读取属性“用户名”
问题描述
在尝试在 laravel 8 上创建假帖子时,我遇到了一些错误,首先它没有创建帖子,然后我将用户名更改为可为空,它创建了它,但我一直有;
尝试在 null 上读取属性“用户名”
所以,我回到我的数据库并将其改回无,但我仍然收到相同的错误代码,我现在将发布我的代码......
index.blade.php
@extends('layouts.app')
@section('content')
<div class="flex justify-center">
<div class="w-8/12 bg-white p-6 rounded-lg">
<form action="{{ route('posts') }}" method="post" class="mb-4">
@csrf
<div class="mb-4">
<label for="body" class="sr-only">Body</label>
<textarea name="body" id="body" cols="30" rows="4" class="by-gray-100 border-2
w-full p-4 rounded lg @error('body') border-red-500 @enderror" placeholder="Post something!"></textarea>
@error('body')
<div class="text-red-500 mt-3 text-sm">
{{$message}}
</div>
@enderror
</div>
<div>
<button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded
font-medium">Post</button>
</div>
</form>
@if ($posts->count())
@foreach ($posts as $post)
<div class="mb-4">
<a href="" class="font-bold">{{ $post->user->username }}</a>
<span class="text-gray-600 text-sm">{{ $post->created_at->diffForHumans() }}</span>
<p class="mb-2">{{ $post->body }}</p>
</div>
@endforeach
{{ $posts->links() }}
@else
There are no posts...
@endif
</div>
</div>
@endsection
用户工厂.php
<?php
namespace Database\Factories;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class UserFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = User::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'username' => $this->faker->username,
'name' => $this->faker->name,
'email' => $this->faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
'remember_token' => Str::random(10),
];
}
/**
* Indicate that the model's email address should be unverified.
*
* @return \Illuminate\Database\Eloquent\Factories\Factory
*/
public function unverified()
{
return $this->state(function (array $attributes) {
return [
'email_verified_at' => null,
];
});
}
}
用户.php
<?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;
class User extends Authenticatable
{
use HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'email',
'password',
'username',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function posts(){
return $this->hasMany(Post::class);
}
}
PostFactory.php
<?php
namespace Database\Factories;
use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;
class PostFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Post::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'body' => $this->faker->sentence(20),
];
}
}
Post.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use HasFactory;
protected $fillable= [
'body',
'user_id',
];
/**
* Get the user that owns the Post
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function user()
{
return $this->belongsTo(User::class);
}
}
解决方案
这是因为我的代码中有一个现有的 user_id,所以我从数据库中删除了它并且它有效
推荐阅读
- mysql - 时间查询 - 查询一列大于另一列
- javascript - 用户脚本对于 Tampermonkey 的集成编辑器来说太大了
- bash - 根据文件内容创建文件夹
- c# - 在 Word VSTO 加载项中查找文档边框和表格之间的距离
- node.js - 从节点js中的日志文件读取
- java - 如何使用 Java 通过 Facebook API 获取我的页面的获利见解?
- docker - 如何将更改推送到 docker hub?
- scala - 退出状态:-100。诊断:容器在 *lost* 节点上释放
- javascript - 显示 JSON 数据的把手
- php - 什么是 wordpress 核心文件,为什么不应该编辑它们?