【发布时间】:2021-10-12 21:50:17
【问题描述】:
我正在 Apiato 框架中开发一些 crud API,它也连接到我的数据库,现在我想开发一个 api,用于将详细信息发布到我的数据库(有效用户只能发布该数据)我想要在上传功能中获取该用户 ID 我没有获取该用户 ID 如何获取该 ID 请帮助我解决此问题..
error i am getting when i try to send request in postman
Illuminate\Database\QueryException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null (SQL: insert into `blogs_table` (`name`, `price`, `image`, `rating`, `country`, `description`, `user_id`, `updated_at`, `created_at`) values (maldives, 9400, ssssssssssss, 5, india, wwwwwwwwww, ?, 2021-08-09 12:22:58, 2021-08-09 12:22:58)) in file /home/vagrant/code/apiato/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 692
BlogModel.php
<?php
namespace App\Containers\UserRegistration\UserContainer\Models;
use App\Ship\Parents\Models\Model;
class BlogModel extends Model
{
protected $table='blogs_table';
protected $fillable = [
'name','price','image','country','rating','description','user_id'
];
protected $attributes = [
];
protected $hidden = [
];
protected $casts = [
];
protected $dates = [
'created_at',
'updated_at',
];
/**
* A resource key to be used in the serialized responses.
*/
protected string $resourceKey = 'BlogModel';
public function user(){
return $this->belongsTo(UserContainer::class);
//return $this->belongsTo('C:\apiato-project\apiato\app\Containers\UserRegistration\UserContainer\Models\UserContainer.php','user_id');
}
}
UserContainer.php
<?php
namespace App\Containers\UserRegistration\UserContainer\Models;
use Tymon\JWTAuth\Contracts\JWTSubject;
use App\Ship\Parents\Models\Model;
class UserContainer extends Model implements JWTSubject
{
protected $fillable = [
'fullName',
'email',
'password',
'mobile'
];
protected $attributes = [
];
protected $hidden = [
];
protected $casts = [
];
protected $dates = [
'created_at',
'updated_at',
];
/**
* A resource key to be used in the serialized responses.
*/
protected string $resourceKey = 'UserContainer';
public function getJWTIdentifier()
{
return $this->getKey();
}
public function getJWTCustomClaims()
{
return [];
}
public function blogs(){
return $this->hasMany(BlogModel::class, 'user_id');
// return $this->hasMany('C:\apiato-project\apiato\app\Containers\UserRegistration\UserContainer\Models\BlogModel','user_id');
}
}
BlogController.php
<?php
namespace App\Containers\UserRegistration\UserContainer\UI\API\Controllers;
use App\Containers\UserRegistration\UserContainer\UI\API\Requests\CreateUserContainerRequest;
use App\Containers\UserRegistration\UserContainer\UI\API\Requests\DeleteUserContainerRequest;
use App\Containers\UserRegistration\UserContainer\UI\API\Requests\GetAllUserContainersRequest;
use App\Containers\UserRegistration\UserContainer\UI\API\Requests\FindUserContainerByIdRequest;
use App\Containers\UserRegistration\UserContainer\UI\API\Requests\UpdateUserContainerRequest;
use App\Containers\UserRegistration\UserContainer\UI\API\Transformers\UserContainerTransformer;
use App\Containers\UserRegistration\UserContainer\Actions\CreateUserContainerAction;
use App\Containers\UserRegistration\UserContainer\Actions\FindUserContainerByIdAction;
use App\Containers\UserRegistration\UserContainer\Actions\GetAllUserContainersAction;
use App\Containers\UserRegistration\UserContainer\Actions\UpdateUserContainerAction;
use App\Containers\UserRegistration\UserContainer\Actions\DeleteUserContainerAction;
use App\Ship\Parents\Controllers\ApiController;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use App\Containers\UserRegistration\UserContainer\Models\BlogModel;
class BlogController extends ApiController
{
public function upload(Request $request ){
//dd($request->all());
$blog = new BlogModel();
$blog->name=$request->input('name');
$blog->price=$request->input('price');
$blog->image=$request->input('image');
$blog->rating=$request->input('rating');
$blog->country=$request->input('country');
$blog->description=$request->input('description');
$blog->user_id = auth()->id();
$blog->save();
return response()->json(['success'=>'successfully added','blogs'=>$blog]);
}
}
【问题讨论】:
-
您尝试过什么解决问题的方法?你被困在哪里了?
-
使用 Auth 类,在外键关系中我取消了硬编码路径,但两种方式都不起作用
-
auth()->id()返回什么? -
@NicoHaase,它返回空值
-
如果 Auth::user()->id;为 null 则您没有将不记名令牌或用户凭据传递到您的 API 端点或使用正确的中间件。如果您使用 Sanctum,此视频将对您有所帮助 youtube.com/watch?v=MT-GJQIY3EU