На самом деле ваш SQL должен использовать соединения следующим образом:
SELECT
p.id,
p.name,
p.code,
pprice.price,
ppictures.image
FROM product p
LEFT JOIN productprice pprice on p.id = pprice.id
LEFT JOIN productpictures ppictures on p.id = ppictures.id
WHERE p.categoryid = 1;
Вы можете прочитать больше здесь о левых соединениях.
Также, вероятно, не рекомендуется совмещать идентификаторы идентификаторов, было бы лучше иметь product_id на productpictures и productprices, и тогда у вас может быть ограничение внешнего ключа на это для таблицы products.
Но, увы, вопрос не в этом. Чтобы сделать это красноречивым, вы должны использовать Relations , а затем вы можете просто сделать что-то вроде этого:
$Product = Product::select('id', 'name', 'code')
->with('ProductPrice', 'ProductPictures')
->where('categoryid', 1)
->get();
и вы сможете вытащить это так:
$Product->id;
$Product->name;
$Product->code;
$Product->ProductPrice->price;
$Product->ProductPicture->image;