坚持这一点。 我在没有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时为什么表现不同?
答案 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();