如何在Laravel中使用关系检索数据

时间:2019-08-16 02:52:32

标签: php mysql laravel

我正在尝试使用laravel中的关系来检索数据,并且一直出现此错误。

  

找不到列:1054未知列'orders.customers_id'   在“ where子句”中(SQL:从mount -t cifs -o username=[USER],password=[PASSWORD] //[HOST]/[SHARE] /[MOUNT_POINT] 中选择* where   journalctlorders in(1、2、3、4、5、6、7、8、9、10))

在此之前,我使用以下代码:

orders

,它返回我想要的确切结果是: enter image description here

这是我的客户表: enter image description here

订单表 enter image description here

订单

customers_id

客户

 $data = DB::table('customers')
        ->join('orders', 'orders.customer_id', 'customers.id')
        ->get();

    // convert to json string
    $data = json_decode(json_encode($data), true);
    return $data;

DataController

    class Orders extends Model
{
    public function customer(){
        return $this->belongsTo(Customers::class);
    }
}

3 个答案:

答案 0 :(得分:2)

你能试试这个吗

订单模型

class Orders extends Model
{
    public function customer(){
        return $this->belongsTo(Customers::class, 'customer_id');
    }
}

DataController

class DataController extends Controller
{
    public function all()
    {

        $All = Customers::order()->paginate(10);

        return response()->json([
            'code' => 0,
            'success' => true,
            'data' => $All,
            'pagination' => [
                'current_page' => $All->currentPage(),
                'last_page' => $All->lastPage(),
                'prev_page_url' => $All->previousPageUrl(),
                'next_page_url' => $All->nextPageUrl(),
                'per_page' => $All->perPage(),
                'total' => $All->total(),
                'count' => $All->count(),
            ]
        ], 200);

我已经将外键放在模型中了。我不完全确定它应该以{{1​​}}还是Order Model的方式尝试两者。

希望有帮助!

答案 1 :(得分:2)

order.customer_id删除Customers::with('order','order.customer_id')->paginate(10);

应该是

Customers::with('orders')->paginate(10);

由于客户可以有很多订单,因此最好将您的关系命名为orders

class Customers extends Model
{
    public function orders()
    {
        return $this->hasMany(Orders::class);
    }
}

答案 2 :(得分:2)

在我的控制器中

    $All = Customers::with('order')->paginate(10);

    return response()->json([
        'code' => 0,
        'success' => true,
        'data' =>$All

    ], 200);

客户模型

   class Customers extends Model
{
    public function order(){
        return $this->hasMany(Orders::class,'customer_id','id');
    }
}

订单模型

class Orders extends Model
{
    public function customers(){
        return $this->belongsTo(Customers::class,'customer_id','id');
    }
}

及其作品。 但是还有一件事我不理解。它的工作要么在Customers modelOrders model中定义关系,要么在两者中定义关系