невозможно получить детали из связанных таблиц в laravel (используется с) - PullRequest
0 голосов
/ 25 февраля 2019

я пытаюсь получить userName из таблицы пользователей и productName из таблицы продуктов в моем файле ProductReview.php, но возвращается ноль

ProductReview.php

class ProductReview extends Model
{
    protected $table = 'product_review';

    protected $fillable = ['review_id','user_id','order_id','product_id','region','vendor','verified_order',
                               'star_rating','date_of_review','review_title','review_message','published',
                               'relevance','order_id','order_item_id','order_type','order_number','source_of_review',
                               'created_at','updated_at','published_by'];

public function pName(){
    return $this->hasOne('App\Models\Product','product_id');
    }
    public function uName(){
        return $this->hasOne('App\Models\User','id');
    }



Function getAllAdminReviews($data){

  $reviews = ProductReview::select('product_review.*,'product_id','user_id')
                      ->with(['pName' => function($pr){
                                $pr->select('product_name');      
                            },
                           'uName' => function($un){
                                $un->select('user_name');        
                            } 
                          ]);
return $reviews;
        }

        }

Product.php

public function pName(){
     return $this->belongsTo('App\Models\ProductReview','product_id');
}

User.php

public function uName(){
    return $this->belongsTo('App\Models\ProductReview','id');
}

вывод: product_id: 586, user_id: 123pName: null uName: ноль, остальные вещи печатаются нормально

отношения

Продукты (product_id, product_name), Пользователи (id, user_name), product_reviews (review_id, product_id, user_id, review_message)

, поэтому мне нужно получить только имя_пользователя из таблицы «Пользователи» и имя_продукта из таблицы «Продукты» на основе идентификаторов таблицы product_reviews (user_id, product_id), но она дает значение null. Надеюсь, мой вопрос ясен

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

проблема была в том, что я не передавал идентификаторы дочерней таблицы, правильная реализация -

ProductReview.php

 public function productName(){
        return $this->hasOne('App\Models\Product','product_id','product_id');
    }
    public function userName(){
        return $this->hasOne('App\Models\User','id','user_id');
    }


 $reviews = ProductReview::with(['productName' => function($pr){
            $pr->select('product_name','product_id');      
            },
             'userName' => function($un){
                 $un->select('fname','id');        
          } 
      ]);
0 голосов
/ 25 февраля 2019
$reviews = ProductReview::with(['pName', 'uName'])->get();

Теперь выше даст вам обзоры продукта с продуктом и пользователем.

Чтобы добавить выбор столбцов, вы можете использовать relation:foreign_key,column, чтобы выбрать определенный столбец.Это своего рода необходимость, если вы добавляете выделение в реляционную загрузку, вам нужно выбрать внешний ключ.

Так что вы можете сделать:

$reviews = ProductReview::with('pName:product_id,product_name')->with( 'uName:user_id,user_name')->get();

Пожалуйста, проверьте согласнобаза данных, если эти внешние ключи верны

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...