我正在尝试从用户表中获取“每个用户的头像”,在laravel中使用“relation”。以下是我的表格和代码。如果我有任何错误,请帮助。
我有提及模型如下
<?php
class Mention extends Eloquent {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'mention';
protected $fillable = ['username', 'statusid', 'public'];
public static $rules = [
'username' => 'required|min:5',
'statusid' => 'required|min:5',
'public' => 'required'
];
public function userget() {
return $this->belongsTo('User');
}
}
用户模型:
<?php
use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;
class User extends Eloquent implements UserInterface, RemindableInterface {
use UserTrait, RemindableTrait;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
protected $fillable = ['username', 'email', 'password'];
public static $rules = [
'username' => 'required|min:5|alpha_num|unique:users',
'email' => 'required|min:5|email|unique:users',
'password' => 'required|min:5',
];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = array('password', 'remember_token');
public function mention() {
return $this->hasMany('Mention', 'username');
}
}
以下是我的提及表: -
+------------+---------------------+------+-----+---------------------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| username | varchar(255) | NO | | NULL | |
| statusid | varchar(255) | NO | | NULL | |
| created_at | timestamp | NO | | 0000-00-00 00:00:00 | |
| updated_at | timestamp | NO | | 0000-00-00 00:00:00 | |
+------------+---------------------+------+-----+---------------------+----------------+
以下是我的用户表
+------------+---------------------+------+-----+
| id | bigint(20) unsigned | NO | PRI |
| username | varchar(255) | NO | |
| email | varchar(255) | NO | |
| password | varchar(100) | NO | |
| avatar | varchar(100) | NO | |
| created_at | timestamp | NO | |
| updated_at | timestamp | NO | |
+------------+---------------------+------+-----+
我希望使用laravel的“with”通过提及表从用户表中获取每个用户的头像。
以下是我的尝试: -
$next = Input::get('next') !== NULL ? Input::get('next') : 0;
$mention = Mention::with(array('userget' => function($query) {
$query->where('username', '=', Auth::user()->username);
}))->skip($next)->take(5)->get()->toArray();
但这使得“userget”始终为“null”。我想要的地方。
它应该从“提示表”返回其各自用户名的“avatar”的所有行。
我在代码中做错了什么。
答案 0 :(得分:0)
如果您希望所有用户都提及(无论是否为当前的身份验证用户),我认为您不需要添加wehere('username')
$mention = Mention::with('userget')->skip($next)->take(5)->get()->toArray();
为了能够使用username
作为关系键,您需要为关系指定它们。
return $this->hasMany('Mention', 'username', 'username');
和
return $this->belongsTo('User', 'username', 'username');
注意我再次建议您查看整个外键事项。 &#34;我对外键的东西不太好&#34;不是借口。如果你认真对待编程,你应该对它有所了解。