Laravel: у сущности есть 2 внешних ключа, как отобразить ту сущность, которая принадлежит конкретной таблице? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть отправка вызова объекта, у него есть 2 пользователя внешнего ключа и задача.Пользователь имеет много представлений, подчинение принадлежит многим пользователям.Задание имеет много отправлений, подчинение принадлежит многим задачам.В моем контроллере

public function go_to_self_marking($id){

    $task = Task::find($id);
    //auth user 
    $user = auth()->user();
    $task_criterias = $task->criterias;
    $user_submissions = $user->submissions;

    //user task criterias submission
    return view('criterias/self-marking')
        ->with('task_criterias',$task_criterias)
        ->with('task',$task)
        ->with('user_submissions',$user_submissions);
}

На мой взгляд

<div>
    @if($user_submissions!== null )
        @foreach($user_submissions as $user_submission)
            <object type="text/html" data="{{$user_submission->url}}"
                width="400px" height="350px"
                style="overflow:auto;border:5px ridge blue">
            </object>
        @endforeach
    @else                            
        <p>No submissions</p>
    @endif
</div>

Таким образом, я могу показать все отправленные, но он не может достичь того, что подчинение относится к указанной задаче.Каждая из моих задач отображает все представления, которые ссылаются на пользователя.Как я могу это исправить?

Я изменил код в моем контроллере

public function go_to_self_marking($id,Submission $submission){
        $task =Task::find($id);
        //auth user
        $user = auth()->user();
        $task_criterias =$task->criterias;

        $task_submissions =$task->submissions;

        //user task criterias submission
        return view('criterias/self-marking')->with('task_criterias',$task_criterias)
            ->with('task',$task)->with('task_submissions',$task_submissions)->with('submission',$submission);


    }

На мой взгляд

{{--@if(Auth::user()->id == $submission->id)--}}
                                       @if($task_submissions!== null )
                                           @foreach($task_submissions as $task_submission)
                                                <object type="text/html" data="{{$task_submission->url}}" width="400px" height="350px" style="overflow:auto;border:5px ridge blue">
                                                </object>
                                            @endforeach
                                        @else
                                            <p>No submissions</p>
                                        @endif
                                    {{--@endif--}}

Теперь отправка относится к указанной задаче, но каждыйПользователь может получить доступ к представлению.

1 Ответ

0 голосов
/ 04 октября 2018

Я полагаю, вам нужно submissions, которое относится к конкретному user и конкретному task.

в функции вашего контроллера.

public function go_to_self_marking($id)
{

    $task = Task::find($id);
    $user = auth()->user();

    // these are the submissions you want.
    $user_task_submissions = $task->submissions()
        ->where('user_id', $user->id)
        ->get();

    ...
    ...
    // rest of the code goes here.
    // send these $user_task_submissions to your view.
    // and iterate over them in your view.
}
...