Получение данных из двух связанных таблиц в Laravel?
Есть две связанные таблицы: Users и Taks
class Task extends Model
{
use HasFactory;
use SoftDeletes;
use Notifiable;
protected $table = 'tasks';
protected $guarded = false;
public function users()
{
return $this->belongsTo(User::class, 'user_id');
}
Я создала команду для отправки сообщений, мне нужно отправлять данные каждый день по задачам. Письмо отправляет, но вместо имя пользователя сейчас он отправляет его user_id. Как можно получит имя пользователя? Я хотела через массив передавать ('user_id'=>task->users->name), но он пишет ошибку, может сам запрос я делаю не правильно.
class SendEmail extends Command
{
protected $signature = 'emails:send';
protected $description = 'Command description';
public function __construct()
{
parent::__construct();
}
public function handle()
{
$task = DB::table('tasks')->where('violation', '=', 'Да')->get()->pluck('user_id');
$subiect = 'Список';
$task = array(
'id' => $task,
);
Mail::send('mail4', ['task1' => $task],
function ($m) use ($subiect) {
$m->from('[email protected]');
$m->to('test@test12')->subject($subiect);
});
}
}
Ответы (1 шт):
Автор решения: Knyaz71
→ Ссылка
Попробуйте воспользовать Eloquent. Замените
$task = DB::table('tasks')->where('violation', '=', 'Да')->get()->pluck('user_id');
на
$task = Task::where('violation', '=', 'Да')->with('users')->get();
П.С.
Не забудьте подключить модель Task через use.