Надеюсь, этого достаточно, чтобы понять, как это сделать.
Примечание: ваш контроллер пытается вывести json, но ваша строка вывода html.
Предполагая, что они Таблицы:
CREATE TABLE `employer_profiles` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`company_name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`company_address` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_unicode_ci;
И
CREATE TABLE `job_posts` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`employer_profile_id` int(10) unsigned NOT NULL,
`description` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Вот некоторые данные
INSERT INTO `employer_profiles` (`id`, `company_name`, `company_address`, `created_at`, `updated_at`)
VALUES
(1, 'Bolay', '123 main street', '2020-03-29 07:18:30', '2020-03-29 07:18:30'),
(2, 'Barones Pizza', '345 Sample road', '2020-03-29 07:18:56', '2020-03-29 07:18:56'),
(3, 'Sigma Electronics', '34 Yamato Road', '2020-03-29 07:23:21', '2020-03-29 07:23:21');
Задания:
INSERT INTO `job_posts` (`id`, `employer_profile_id`, `description`, `created_at`, `updated_at`)
VALUES
(1, 1, 'Cashier', '2020-03-29 07:20:18', '2020-03-29 07:20:23'),
(2, 1, 'Food prep', '2020-03-29 07:20:35', '2020-03-29 07:20:35'),
(3, 2, 'Chef', '2020-03-29 07:23:41', '2020-03-29 07:23:41'),
(4, 3, 'QA engineer', '2020-03-29 07:24:00', '2020-03-29 07:24:00');
Типичный код с использованием БД Фасад:
$data = DB::table('employer_profiles')
->join('job_posts', 'job_posts.employer_profile_id', '=', 'employer_profiles.id')
->get();
foreach($data as $row){
echo json_encode($row) . "\n";
}
Использование eloquent
EmployerProfile. php
namespace App;
use Illuminate\Database\Eloquent\Model;
class EmployerProfile extends Model
{
public function jobposts()
{
return $this->hasMany('App\JobPost');
}
}
JobPost. php
namespace App;
use Illuminate\Database\Eloquent\Model;
class JobPost extends Model
{
//
}
Затем в Вообще вы можете использовать этот код. Этот фрагмент кода был запущен командой Laravel. Вы можете думать о нем как о коде, который можно использовать где угодно.
use App\JobPost;
use App\EmployerProfile;
$all = EmployerProfile::all();
foreach($all as $emp) {
$this->line($emp->company_name);
foreach($emp->jobposts as $post) {
$this->line(' ' . $post->description);
}
}
Контроллер:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\EmployerProfile;
class EmployerController extends Controller
{
public function index()
{
$all = EmployerProfile::all();
$output = [];
foreach($all as $emp) {
foreach($emp->jobposts as $post) {
$output[] = [
'company_name' => $emp->company_name,
'company_address' => $emp->company_address,
'description' => $post->description
];
}
}
// output json
return response()->json($output);
}
}