我有两张桌子
//用户 ID 用户名 密码
//个人资料 用户身份 标志
我希望获取具有user_id等于已登录用户ID但但我不能这样做的个人资料信息。 我该怎么办?
/个人资料模型
<?php
namespace App\Http\Models;
use Illuminate\Database\Eloquent\Model;
class Profile extends Model
{
public function user()
{
$this->belongsTo('App\User');
}
}
//客户端控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Models\Profile as Profile;
use App\Http\Requests;
use Auth;
class ClientController extends Controller
{
public function index()
{
$profile = Profile::find(Auth::user()->id);
return view('client.profil')->with($profile);
}
}
我收到了这个错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'profiles.id' in 'where clause' (SQL: select * from `profiles` where `profiles`.`id` = 1 limit 1)
通常可能是这样的:select * from user user = id = 1 // 1记录了user_id
答案 0 :(得分:2)
首先,您没有使用主键。没关系,但你需要告诉Eloquent。在Profile
模型中,请确保您已将$primaryKey
设置为null
。
protected $primaryKey = null;
然后,您需要在App\User
模型中定义关系的倒数:
public function profile()
{
return $this->hasOne('App\Profile');
}
您真正想要的不是按用户ID查询个人资料,而是加载用户的个人资料,所以让我们看一下:
$user = auth()->user()->load('profile');
$profile = $user->profile;
return view('client.profil', compact('profile'));
答案 1 :(得分:0)
我想你应该试试这个..
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Models\Profile as Profile;
use App\Http\Requests;
use Auth;
class ClientController extends Controller
{
public function index()
{
$profile = Profile::where('user_id',Auth::user()->id)->first();
return view('client.profil')->with($profile);
}
}