2016-11-16 24 views
8

Tôi có đối tượng Người bán có Người dùng có liên quan. Tôi cần phải điền vào một lựa chọn từ LaravelCollective vì vậy tôi cần phải thực hiện một cái gì đó như thế này:Laravel lấy trường từ mối quan hệ

{!! Form::selectGroup('seller_id', 'Seller', Seller::with('user')->pluck('user.first_name', 'id')->toArray(), null) !!} 

Vấn đề là tôi không thể lấy trường từ các mối quan hệ (user.first_name).

Tôi có thể làm như thế nào?

CẬP NHẬT

Tôi muốn tránh làm điều này ...

<?php 
    $sellers = []; 

    Seller::with('user')->get()->each(function ($seller) use (&$sellers) { 
     $sellers[$seller->id] = $seller->user->first_name; 
    }); 
?> 

Trả lời

15

Bạn có thể sử dụng phương pháp pluck Laravel như:

$sellers = Seller::with('user')->get()->pluck('user.first_name', 'id') 
4

Bạn có thể đạt được điều đó bằng cách sử dụng join() & pluck() như thế này:

$s = Seller::join('users', 'sellers.user_id', '=', 'users.id') 
      ->pluck('sellers.id', 'users.id') 
      ->all(); 

này sẽ đưa ra một mảng như sau:

[ 
    'seller_id_1' => 'user_id_1', 
    'seller_id_2' => 'user_id_2', 
    'seller_id_3' => 'user_id_3', 
    'seller_id_4' => 'user_id_4', 
    'seller_id_n' => 'user_id_n', 
]; 

Hy vọng điều này sẽ hữu ích!

+0

Bạn có lập luận ngược trong cuộc gọi của bạn cho 'nhổ()'. Để có được kết quả mà bạn đang đề xuất bạn phải gọi: 'pluck ('users.id', 'sellers.id')'. Giá trị arg đầu tiên là giá trị để lấy, giá trị thứ hai là giá trị sử dụng làm khóa mảng cho mỗi giá trị được lấy. – Soulriser

Các vấn đề liên quan