2016-07-14 1 views
1

私はurl列のMySQLテーブルを持っており、テーブル内のすべてのurl値のリストを取得したいと思います。構造:Laravelを使用してPHPでSails JS Waterlineコレクションから特定のフィールドのリストを取得するにはどうすればよいですか?

Structure

私はすべてのurl列の値の配列を取得するには、このような何かを行っている可能性:

$boards = Board::all()->lists('url'); 

をしかし、私は使用してこれを行う方法を見つけ出すことはできませんセイルJS。私はfind()が引数なしでデータベースのすべての行を取得していることに気がつきましたが、ドキュメントではurl列の値のリストを取得する方法や、返されたコレクション。

私はこれを試してみた:

var boards = Board.find().exec(function(error, _boards) { 
    if(error) 
    { 
    return response.negotiate(error); 
    } 

    return _boards; 
}); 

しかし、私は実際に返されたデータを反復処理するように見えることはできません。

どのような考えですか?

EDIT:

全HomepageController.js:

module.exports = { 
    index: function (request, response) { 
    var data = { 
     currentDate: (new Date()).toString(), 
     boards: Board.query('SELECT url FROM board', function (error, results) { 
     if (error) { 
      return response.negotiate(error); 
     } 

     return results; 
     }) 
    }; 

    return response.view('homepage', data); 
    } 
}; 

EDIT:ワーキングコード:

module.exports = { 
    index: function (request, response) { 
    Board.query('SELECT url FROM board', function(error, results) { 
     if(error) 
     { 
     return response.negotiate(error); 
     } 

     return response.view('homepage', { currentDate: (new Date()).toString(), boards: results }); 
    }); 
    } 
}; 

答えて

2

あなたは、個々の列を選択するために、生.query()を使用することができます。

Board.query('SELECT url FROM board', function (err, results) { ... }); 

は、しかし、あなたのデータはまだ次のようになりますことを心に留めておいてください。

[{url: 'row 1 value'}, {url: 'row 2 value'}, ...] 
+0

こんにちは、私はあなたがしかし、私はまだ結果が私のHTMLで表示することができません示唆したものを試してみました。私のHTMLのために、私がやっていることは、Twigを使って 'boards'変数のforループです。私は私のコントローラのコードをメインポストに追加しました。 –

+0

'Board.query'はデータを同期的に返しません。つまり、非同期コールバックです。コールバック関数内の' data.boards 'に 'results'を割り当て、コールバックの内部で' response.view() 'を呼び出します。 –

+0

ありがとう、それは動作します。これは慣れるまでに時間がかかるでしょう。これを簡単にするために私のコントローラを構築するための推奨される方法はありますか?たとえば、複数のクエリを実行していた場合、ビューを返す前にそれらがすべて完了していることを確認するにはどうすればよいですか? –

関連する問題