[英]SQLSTATE[HY000]: General error: 1364 Field 'photo' doesn't have a default value in laravel 5.5
[英]SQLSTATE[HY000]: General error: 1364 Field 'accepted' doesn't have a default value
您好,我正在嘗試創建一個類似於 Facebook 的朋友系統,您可以在其中將另一個用戶添加為朋友,但是,一旦我單擊添加朋友按鈕,就會出現此錯誤。 任何幫助將不勝感激,謝謝。
SQLSTATE[HY000]:一般錯誤:1364 字段“接受”沒有默認值(SQL:插入
friends
(friend_id
,user_id
)值(1、3))
用戶名
<?php
namespace Kermode;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'first_name','last_name', 'email', 'password','gender',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function getName()
{
if ($this->first_name && $this->last_name) {
return "{$this->first_name} {$this->last_name}";
}
if ($this->first_name) {
return $this->first_name;
}
return null;
}
public function getNameOrUsername()
{
return $this->getName() ?: $this->username;
}
public function getFirstNameOrUsername()
{
return $this->first_name ?: $this->username;
}
public function getAvatarUrl()
{
return "https://www.gravatar.com/avatar/{{ md5($this->email) }}
?d=mm&s=40";
}
public function friendsOfMine()
{
return $this->belongsToMany('Kermode\User', 'friends', 'user_id',
'friend_id');
}
public function friendOf()
{
return $this->belongsToMany('Kermode\User' , 'friends', 'friend_id'
, 'user_id');
}
public function friends()
{
return $this->friendsOfMine()->wherePivot('accepted', true)->get()->
merge($this->friendOf()->wherePivot('accepted', true)->get());
}
public function friendRequests()
{
return $this->friendsOfMine()->wherePivot('accepted', false)->get();
}
public function friendRequestsPending()
{
return $this->friendOf()->wherePivot('accepted', false)->get();
}
public function hasFriendRequestPending(User $user)
{
return (bool) $this->friendRequestsPending()->where('id', $user->id)->
count();
}
public function hasFriendRequestRecieved(User $user)
{
return (bool) $this->friendRequests()->where('id', $user->id)->count();
}
public function addFriend(User $user)
{
$this->friendOf()->attach($user->id);
}
public function acceptFriendRequest(User $user)
{
$this->friendRequests()->where('id', $user->id)->first()->pivot->
update([
'accepted' => true,
]);
}
public function isFriendsWith(User $user)
{
return (bool) $this->friends()->where('id', $user->id)->count();
}
}
朋友控制器.php
<?php
namespace Kermode\Http\Controllers;
use Auth;
use Kermode\User;
use Illuminate\Http\Request;
class FriendController extends Controller
{
public function getIndex()
{
$friends = Auth::user()->friends();
$requests = Auth::user()->friendRequests();
return view('friends.index')
->with('friends', $friends)
->with('requests', $requests);
}
public function getAdd($first_name)
{
$user = User::where('first_name', $first_name)->first();
if (!$user) {
return redirect()
->route('home')
->with('info', 'That user could not be found');
}
if (Auth::user()->hasFriendRequestPending($user) || $user->
hasFriendRequestPending(Auth::user())) {
return redirect()
->route('profile.index', ['first_name' => $user->first_name])
->with('info', 'Friend request already pending.');
}
if (Auth::user()->isFriendsWith($user)) {
return redirect()
->route('profile.index', ['first_name' => $user->firstname])
->with('info', 'You are already friends');
}
Auth::user()->addFriend($user);
return redirect()
->route('profile.index', ['first_name' => $first_name])
->with('info', 'Friend request sent.');
}
}
profile.index.blade.php
@extends('layouts.app')
@section('content')
<div class="row">
<div class="col-leg-6">
<h3>Your friends</h3>
@if (!$friends->count())
<p>You have no friends</p>
@else
@foreach ($friends as $user)
@include('user/partials/userblock')
@endforeach
@endif
</div>
<div class="col-lg-6">
<h4>Friend Request</h4>
@if (!$requests->count())
<p>You have no friend requests.</p>
@else
@foreach ($requests as $user)
@include('user.partials.userblock')
@endforeach
@endif
</div>
</div>
@endsection
朋友表
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateFriendsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('friends', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->integer('friend_id');
$table->boolean('accepted');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('friends');
}
}
你必須添加acceptable到$fillable
如果您沒有將列名添加到模型中的 $fillable 中,則會發生此錯誤
1364 字段 'accepted' 沒有默認值
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['accepted'];
}
這個錯誤可能是因為數據庫。 接受的列需要可以為空或具有默認值,例如
$table->boolean('accepted')->nullable();
或者
$table->boolean('accepted')->default(false);
去把你的數據庫數據類型中你接受的列更改為 tinyint 然后按照定義更改為 0 .. 當我發現這個時它會起作用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.