用户表
- id
- name (string)
访问表
- id
- user_id
- viewer_id
我想获取具有给定用户的链接用户名的访问列表(在这种情况下,id = 1)
$visits = \Visits::where(['user_id' => 1])->with('user')->get();
这是我的造访模式:
class Visits extends Model
{
protected $table = 'visits';
public function store(Request $request)
{
$visits = new Visits;
$visits->save();
}
public function user()
{
return $this->belongsTo('User', 'viewer_id');
}
}
这是我的用户模型
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public function store(Request $request)
{
$user = new User;
$user->save();
}
}
它返回数据,但“用户”为 null
答案 0 :(得分:4)
我认为您需要稍微更改代码。请尝试以下操作:
public function user()
{
return $this->belongsTo('App\User', 'viewer_id', 'id');
}
$ visits = \ Visits :: where(['user_id'=> 1])-> with('user')-> get();
答案 1 :(得分:0)
我假设在您的visits table
中,user_id
是被访问的人,viewer_id
是被访问的人/用户。
所以,我的Visits
模型应该是这样的
class Visits extends Model
{
protected $table = 'visits';
protected $fillable = array('user_id','viewer_id'); //Fillable is for Mass Assignment
public function user()
{
return $this->belongsTo(User::class,'user_id','id');
}
public function visitorsDetails(){
return $this->belongsTo(User::class,'viewer_id','id');
}
}
现在要使用user_id=1
为用户获取所有访客详细信息,我会做类似的事情。
$visitorList = Visits::where('user_id',1)->with('visitorsDetails')->get();
echo <pre>;
print_r($visitorList->toArray()); // This will show the visitor with visitors detail in an array form.
注意::我不确定为什么要在模式内部编写store
函数,不需要您直接从控制器本身保存数据。