Я просмотрел несколько примеров и предыдущих сообщений здесь, но я не могу найти, что я делаю неправильно.У меня есть две таблицы:
Пользователи
id username
1 test1
2 test2
3 test3
Таблица результатов
id user_id points
1 1 52
2 2 62
3 3 12
А теперь я хочу получить все оценки и заменить user_id фактическим именем пользователя.Вот мой код:
ScoresController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Score;
use App\Http\Resources\Score as ScoreResource;
class ScoresController extends Controller
{
public function index()
{
$scores = Score::with('user')->paginate(4);
return ScoreResource::collection($scores);
}
}
Score.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\User;
class Score extends Model
{
public function user(){
return $this->belongsTo(User::class,'user_id');
}
}
Пользователь
<?php
namespace App;
use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Score;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
protected $fillable = [
'username', 'email', 'password', 'avatar'
];
protected $hidden = [
'password', 'remember_token',
];
public function scores(){
return $this->hasMany(Score::class,'user_id');
}
}
И счет ресурса
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class Score extends JsonResource
{
public function toArray($request)
{
return [
'username' => $this->user_id,
'points' => $this->points,
];
}
}
В данный момент я показываю user_id и точки, я пытался с
$this->username OR $this->user-id->username
, но ни один из них не работает, и я знаю, что могу использовать DB или необработанный SQL, но я хочу сделать это такспособ