如何使用 Laravel 一对一将用户数据传递到 JSON 文件
How to pass user data into a JSON file using Laravel one to one
我在使用一对一关系的 JSON 文件中获取用户数据时遇到问题
这是我的 PostRequest 模型
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class PostRequest extends Model
{
use HasFactory;
public function user(){
return $this->belongsTo(User::class, 'artisan_id');
}
}
用户模型
<?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 Laratrust\Traits\LaratrustUserTrait;
use App\Models\Verify;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Database\Eloquent\Model;
class User extends Authenticatable
{
use LaratrustUserTrait;
use HasFactory, Notifiable;
public function PostRequest(){
return $this->hasOne(PostRequest::class, 'artisan_id');
}
}
控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\Models\PostRequest;
use App\Models\User;
class ChatController extends Controller
{
public function getMessages(){
return view('user/message'); //response()->json($contacts);
}
public function getContact(){
$email = Auth::user()->email;
$contacts = PostRequest::select('artisan_id')->where('email', '=', $email)
->limit('1')
->orderBy('id', 'DESC')
->user();
return response()->json($contacts);
//}
}
}
如果运行 上面的控制器我收到这个错误消息
[14:09:51] LOG.error: Call to undefined method Illuminate\Database\Eloquent\Builder:: user() {"userId":15,"exception":{}
如果我运行这个我得到所有数据,但是我需要一个特定的数据
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\Models\PostRequest;
use App\Models\User;
class ChatController extends Controller
{
public function getMessages(){
return view('user/message'); //response()->json($contacts);
}
public function getContact(){
$email = Auth::user()->email;
$contacts = PostRequest::all();
return response()->json($contacts);
//}
}
}
试试这个查询:
$email = Auth::user()->email;
$contacts = PostRequest::where('email', $email)->first()->user;
return response()->json($contacts);
我在使用一对一关系的 JSON 文件中获取用户数据时遇到问题 这是我的 PostRequest 模型
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class PostRequest extends Model
{
use HasFactory;
public function user(){
return $this->belongsTo(User::class, 'artisan_id');
}
}
用户模型
<?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 Laratrust\Traits\LaratrustUserTrait;
use App\Models\Verify;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Database\Eloquent\Model;
class User extends Authenticatable
{
use LaratrustUserTrait;
use HasFactory, Notifiable;
public function PostRequest(){
return $this->hasOne(PostRequest::class, 'artisan_id');
}
}
控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\Models\PostRequest;
use App\Models\User;
class ChatController extends Controller
{
public function getMessages(){
return view('user/message'); //response()->json($contacts);
}
public function getContact(){
$email = Auth::user()->email;
$contacts = PostRequest::select('artisan_id')->where('email', '=', $email)
->limit('1')
->orderBy('id', 'DESC')
->user();
return response()->json($contacts);
//}
}
}
如果运行 上面的控制器我收到这个错误消息
[14:09:51] LOG.error: Call to undefined method Illuminate\Database\Eloquent\Builder:: user() {"userId":15,"exception":{}
如果我运行这个我得到所有数据,但是我需要一个特定的数据
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\Models\PostRequest;
use App\Models\User;
class ChatController extends Controller
{
public function getMessages(){
return view('user/message'); //response()->json($contacts);
}
public function getContact(){
$email = Auth::user()->email;
$contacts = PostRequest::all();
return response()->json($contacts);
//}
}
}
试试这个查询:
$email = Auth::user()->email;
$contacts = PostRequest::where('email', $email)->first()->user;
return response()->json($contacts);