Laravel- Błędne zapytanie, jak poprawić

0

Dzień dobry,
Tworzę api i jest sprawa :(
Mam problem z zapytaniem.
Otóż mam notatki użytkownika oraz dane przypisane do notatek.
i sprawa wygląda muszę wyświetlić razem noatkę i wszystkie dane przypisane do notatki. A więc używam join ale niestety jeżeli wyświetlam dane to wyświetla mi tylko te noattki które mają do siebie przypisane dane a niestety notatka nie musi posiadać żadnych danych. Jest to najwyraźniej problem z tym że szuka warunku że wypisz tylko jeżeli notatka posiada pliki, jak to zmienić? pomoże ktoś, jakaś podpowiedź :/ ? wysyłam kod:

$user=auth()->user(); $user->id; $user_notes = DB::table('user_notes') ->join('user_datas','user_notes.id','=','user_datas.User_notes_idNotes_user') ->select('user_notes.id','user_notes.title','user_notes.note','user_notes.created_at','user_notes.updated_at' ,'user_datas.id','user_datas.dataName','user_datas.data','user_datas.created_at','user_datas.updated_at') ->get()->toJson(JSON_PRETTY_PRINT); return response($user_notes, 200);

3

Używaj tagów do kodu, najlepiej z wpisem języka to pokoloruje się składnia np. ```php
Jak używasz join to może spróbuj zamiast join użyć left join.

0

Przede wszystkim zrób Model dla plików UserNote i UserData. Następnie jak rozumiem w tabelach masz relacje więc w plikach modelu też zrób relacje. Jeśli interesuje cię użytkownik i jego notatki to robisz w pliku UserData

public function getNotes() {
        return $this->hasMany('App\UserNote', 'User_notes_idNotes_user', 'Id');  // jesli User_notes_idNotes_user co to w ogole jest ?
    }

w ten sposób jak wejdziesz do controller api robisz

use App/UserData;

UserData::('Id', auth()->user()->id)-> getNotes();

i to wszystko. Jeżeli chcesz dowiedzieć się do kogo należy notka to robisz zwrotną relację w pliku UserNote jeśli trzymaleś się konwencji tabel


public function user() {
        return $this->belongsTo('App\UserData');
    }

i wtedy w kontrolerze piszesz

UserNote::(1)->user(); 

i pokazuje ci dane użytkownika. Najmniejszą jednostką informacji w tabeli jest rekord więc nie musisz wybierać SELECT tylko bierz wszystkie pola rekordu a potem wyświetlisz tylko te co chcesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1