2016-08-26 6 views
1

Я успешно создал множество функций, используя where запрос на Laravel 5.3, но на этот раз происходит что-то странное.Laravel 5.3 Возвращение? on Where Eloquent

public function show($id){ 
    $artikel = Artikel::select('artikel.*','kategori.kategori_id','kategori.kategori_nama','users.name','users.user_photo','users.biodata') 
      ->join('kategori','artikel.kategori_id','=','kategori.kategori_id') 
      ->join('users','user_id','=','id') 
      ->orderBy('view','desc') 
      ->find($id); 
    $kategori = Kategori::all(); 
    $sub = Artikel::select('kategori_id')->where('artikel_id',$id)->toSql(); 
    dd($sub); 
    $related = Artikel::where('kategori_id','=',$sub) 
       ->get(); 
    dd($related); 
    if($artikel == null){ 
     $artikel = new Artikel; 
     $artikel->pesan=0; 

     foreach ($artikel as $post) { 
      $this->putInCache($post->slug, $post, 'artikel'); 
     } 
     return view('artikel.show')->with('artikel',$artikel)->with('kategori',$kategori); 
    } 

    $artikel->view+=1; 
    $artikel->save(); 

    return view('artikel.show')->with('artikel',$artikel)->with('kategori',$kategori)->with('related',$related); 
} 

Метод выводит ошибку на линии 8. dd() на линии 9 возвращается

"select `kategori_id` from `artikel` where `artikel_id` = ?" 

Я попытался изменить запрос

$sub = Artikel::select('kategori_id')->where('artikel_id','=',1)->toSql(); 

И гораздо больше, но все равно получена ошибка. Эта строка вернула ? на where where. Пожалуйста, помогите мне.

Спасибо!

UPADTE 1

Теперь код выглядит так:

$related = Artikel::where('kategori_id','=','select kategori_id from artikel where artikel_id = 1') 
       ->get(); 

и результат возвращается пустая коллекция.

Коллекция {# 272 ▼ #items: [] }

+0

Какова конкретная ошибка/исключение, которое вы получаете? – phaberest

+0

@ Danu Akbar ** toSql() ** не будет возвращать полный запрос из-за ** bind parameter **. используйте '-> get()' вместо '-> toSql()'. Это покажет вам результат. – Manish

+0

@phaberest, что точно –

ответ

1

Это не ошибка, ?is normal. toSql() метод показывает ? знак вместо значений в запросе.

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

0

Я нашел работу. Есть код:

$sub = DB::raw('(select kategori_id from artikel where artikel_id =1)'); 
    $related = DB::table('artikel')->select('*')->where('kategori_id','=',($sub))->get(); 
    dd($related); 
Смежные вопросы