Я хочу показать причину в профиле пользователя, но показать идентификатор причины в профиле пользователя - PullRequest
0 голосов
/ 07 мая 2018
public function getreason(Request $request){

    $reasons = TradeReason::where('trade_id',$request->trade_id)->pluck("reason_id");

    $reasondisplay = Reason::where "$reasons", '=', 'id')->pluck("reason");

    return response() -> json($reasondisplay);
}

Его код показывает только идентификатор причины, но не показывает причину в профиле пользователя

Ответы [ 3 ]

0 голосов
/ 07 мая 2018

Столбец должен содержать параметр first, в котором функция

public function getreason(Request $request){
    $reasons = TradeReason::where('trade_id',$request->trade_id)->first();
    $reason = "";
    if($reasons){
        $reasondisplay = Reason::find($reasons->reason_id)->first();
        if($reasondisplay){
            $reason = $reasondisplay->reason;
        }
    }
    return response()->json(["reason"=>$reason]);
}

Лучше вы можете использовать отношение

В TradeReason

public function reason()
{
    return $this->hasOne('App\TradeReason','id','reason_id');
    //                                      ^      ^
    //                                      |      |____ 'local_key'
    //                                      |__'foreign_key'
}

В контроллере

public function getreason(Request $request){
    $reason = "";
    $tr = TradeReason::where('trade_id',$request->trade_id)->with("reason")->first();
    return response()->json(["reason"=>$tr->reason->reason]);
    //                                       ^          ^
    //                                       |          |___Column Name
    //                                       |__Relation Name
}
0 голосов
/ 07 мая 2018

Вы запрашиваете массив с идентификатором в $reasondisplay. Вы должны использовать функцию whereIn(), чтобы запросить идентификатор в массиве и выяснить причину.

public function getreason(Request $request){

    $reasons = TradeReason::where('trade_id',$request->trade_id)->pluck('reason_id');

    $reasondisplay = Reason::whereIn('id', $reasons)->pluck('reason');

    return response() -> json($reasondisplay);
}

Вы можете обратиться к laravel Документация

0 голосов
/ 07 мая 2018

Ваша функция не закодирована должным образом, поэтому просто замените вашу функцию этим кодом и используйте метод whereIn() вместо where.

public function getreason(Request $request){

    $reasons = TradeReason::where('trade_id',$request->trade_id)->pluck("reason_id");

    $reasondisplay = Reason::whereIn('id',$reasons)->pluck("reason");

    return response()->json($reasondisplay);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...