使用id的order_details的Laravel查询订单

时间:2017-01-09 18:32:10

标签: php laravel-5.3 laravel-eloquent

坚持这一点。 我在没有Id的情况下使用相同的查询来成功获取所有这些数据。

'use strict'
import React from 'react'
import ReactDOM from 'react-dom'
import Layout from './components/common/Layout'
import { Router, Route, IndexRoute, browserHistory } from 'react-router'
import configureStore from './store/configureStore'
import { Provider } from 'react-redux'

const store = configureStore()

class App extends React.Component {
  render () {
    return (
      <Provider store={store}>
        <Router history={browserHistory}>
          <Route path='/' component={Layout}></Route>
        </Router>
      </Provider>
    )
  }
}

ReactDOM.render(<App />, document.getElementById('app'))

关系

订单:

$orders = $this->order
    ->with('orderDetails', 'orderDetails.product')
    ->today()
    ->get();

的OrderDetail:

public function orderDetails(){
    return $this->hasMany('App\OrderDetail', 'order_id');
}

但是尝试使用相同的东西来获取特定订单的数据并不会返回order_details。

 public function order()
{
    return $this->belongsTo('App\Order', 'order_id', 'id');
}

public function product()
{
    return $this->belongsTo('App\Product', 'id_products', 'id');
}

传递id时为什么表现不同?

2 个答案:

答案 0 :(得分:1)

尝试以这种方式使用:

$ordered = $this->order->find($id);

return response()->json($ordered);

laravel已根据您在模型中输入的映射而转向关系。 在这种情况下,您的响应中的orderDetails将如下所示:

订单:{ Id:“1”, Xpto:“不管”, 订单详细信息: { Id:“1” } }

答案 1 :(得分:1)

当您使用find时,查询将在其他指令之前执行。您需要使用where

$ordered = $this->order
    ->where('order_id', $id)
    ->with('orderDetails', 'orderDetails.product')
    ->get();